当 交叉开关(优先权交叉开关译码器) 配置寄存器 XBR0 XBR1 XBR2 XBR3中外设的对应使能位被配置为逻辑”1”时,交叉开关将端口引脚分配给外设。
交叉开关按优先权顺序端口0——3的引脚分配给器件上的数字外设(UART SMBus PCA 定时器等)。端口引脚的分配顺序是从P0.0开始,可以一直分配到P3.7.
图1 端口I/O 功能框图
图2 优先权交叉开关译码表
第二章 12位ADC
C8051F040的ADC0子系统包括:
一个9通道的可编程模拟多路选择器(AMUX0)
一个可编程增益放大器(PGA0)
一个100Ksps、12位分辨率的逐次逼近寄存器型ADC
ADC0功能框图
2.1模拟多路开关 和 可编程增益放大器(PGA)
模拟多路器可以从:
4个模拟输入引脚(AIN0.0 ,AIN0.1;AIN0.2,AIN0.3);
P3口引脚(可被配置为模拟输入引脚);
高压差分放大器;
片内温度传感器;
选择去ADC德模拟信号。
模拟多路器与外部模拟输入、P3口I/O引脚、高压差动放大器和片内温度传感器的连接如下图所示。
2.1.1
1)AMUX0CF:AMUX0配置寄存器
Port3IC:P3口 偶数/奇数引脚输入对配置;
AIN23IC:AIN0.2 AIN0.3的输入对配置;
AIN01IC:AIN0.0 AIN0.1的输入对配置;
2)AMUX0SL: AMUX0通道选择寄存器
3)AMUX0PORT :P3口引脚选择寄存器
PAINnEN:引脚n模拟输入使能位
0:P3.n 未被选择为AMUX0的输入
1:P3.n 被选择为AMUX0的输入
2.2 高压差分放大器
高压差分放大器(HVDA)可以用于测量高达60V的峰-峰值的高差分电压,抑制高达±60V的共模电压,并将信号电压调节到适合于ADC0的输入范围。
1) HVA0CN 高压差分放大器控制寄存器:
HVDAEN:高压差分放大器使能位
HVGAIN3~0:高压差分放大器增益控制位
2.3ADC工作方式
2.3.1
1)ADC0CN:ADC0控制寄存器
AD0EN:ADC0使能
AD0INT:ADC0转换结束中断标志
第三章 12位DAC
第四章 控制器局域网
CAN数据寄存器:CANDATH CANDATL
CAN地址寄存器: CANOADR
CAN控制寄存器:CAN0CN
CAN测试寄存器:CANOTST
CAN状态寄存器:CANOSTA
每个CAN控制器寄存器都有一个索引号。CAN寄存器地址空间为128个字节。当一个CAN寄存器的索引号被写入到CAN地址寄存器(CAN0ADR)后,就可以听通过CAN数据寄存器(CAN0DATH CAN0DATL)来访问CAN寄存器。
//CAN 寄存器定义
/////////////////////////////////////////////////////////////////////////////////////
#define CANCTRL 0x00 //Control Register
#define CANSTAT 0x01 //Status register
#define ERRCNT 0x02 //Error Counter Register
#define BITREG 0x03 //Bit Timing Register
#define INTREG 0x04 //Interrupt Low Byte Register
#define CANTEST 0x05 //Test register
#define BRPEXT 0x06 //BRP Extension Register
/////////////////////////////////////////////////////////////////////////////////
//CAN IF1 接口寄存器定义
/////////////////////////////////////////////////////////////////////////////////
#define IF1CMDRQST 0x08 //IF1 Command Rest Register
#define IF1CMDMSK 0x09 //IF1 Command Mask Register
#define IF1MSK1 0x0A //IF1 Mask1 Register
#define IF1MSK2 0x0B //IF1 Mask2 Register
#define IF1ARB1 0x0C //IF1 Arbitration 1 Register
#define IF1ARB2 0x0D //IF1 Arbitration 2 Register
#define IF1MSGC 0x0E //IF1 Message Control Register
#define IF1DATA1 0x0F //IF1 Data A1 Register
#define IF1DATA2 0x10 //IF1 Data A2 Register
#define IF1DATB1 0x11 //IF1 Data B1 Register
#define IF1DATB2 0x12 //IF1 Data B2 Register
/////////////////////////////////////////////////////////////////////////////////
//CAN IF2 接口寄存器定义
/////////////////////////////////////////////////////////////////////////////////
#define IF2CMDRQST 0x20 //IF2 Command Rest Register
#define IF2CMDMSK 0x21 //IF2 Command Mask Register
#define IF2MSK1 0x22 //IF2 Mask1 Register
#define IF2MSK2 0x23 //IF2 Mask2 Register
#define IF2ARB1 0x24 //IF2 Arbitration 1 Register
#define IF2ARB2 0x25 //IF2 Arbitration 2 Register
#define IF2MSGC 0x26 //IF2 Message Control Register
#define IF2DATA1 0x27 //IF2 Data A1 Register
#define IF2DATA2 0x28 //IF2 Data A2 Register
#define IF2DATB1 0x29 //IF2 Data B1 Register
#define IF2DATB2 0x2A //IF2 Data B2 Register
/////////////////////////////////////////////////////////////////////////////////
//CAN 消息控制寄存器定义
/////////////////////////////////////////////////////////////////////////////////
#define TRANSREQ1 0x40 //Transmission Rest1 Register
#define TRANSREQ2 0x41 //Transmission Rest2 Register
#define NEWDAT1 0x48 //New Data 1 Register
#define NEWDAT2 0x49 //New Data 2 Register
#define INTPEND1 0x50 //Interrupt Pending 1 Register
#define INTPEND2 0x51 //Interrupt Pending 2 Register
#define MSGVAL1 0x58 //Message Valid 1 Register
#define MSGVAL2 0x59 //Message Valid 2 Register
//////////////////////////////////////////////////////////////////////////////
sfr16 CAN0DAT=0xD8;
第五章 中断
CIP-51包含一个扩展的中断系统,支持20个中断源。