符号: ()
使用方法: (类型)(表达式)
使用强制类型转换运算符可以将一个表达式转换成所需的类型;
在强制转换时,得到一个所需类型的中间变量,原来变量的类型不变;
在给指针变量赋值时特别有用,比如当指针变量被定义为char型,而需要将一个int型的变量地址赋值给该指针时,如果不作转换,则系统会报警告.这时做个类型转化则可避免该问题.
如:
wrpage(0x0000,(char *)&ccc,2) ;
//说明:由于ccc的数据类型为int型,所以要将其转化为char型
又如:
tx((char)(ADDR_24%256));
//送数据地址并检测应答信号 //说明:ADDR_24是int型数据,要转化为char型
关于中断,有很多种方法,在AN2616中提到:
把#pragma TRAP_PROC 放在中断程序前面,并把中断向量表放到linker.prm。例如:
#pragma TRAP_PROC
void intSW1(void){
}
-------------------------------------------------
或者使用关键词interrupt,并把向量表加入linker.prm。例如:
interrupt void intSW1(void){
}
-------------------------------------------------
把向量表的首地址放入linker.prm。例如:
VECTOR ADDRESS 0xFFD2 intSW1
-------------------------------------------------
在定义中断程序的时候使用关键词"interrupt"并把特定的中断向量号。这种方法不需要在linker.prm中更改任何东西。例如:
interrupt 22 void intSW1(void){
}
这种方法有很明显的优点,它把所有的东西都写在一个文件中,而不需要依赖于另一个文件。
公式: 中断频率=总线频率/(分频因子*计数器预置值)
注: 总线频率=晶振频率/4
分频因子可设置为1,2,4,8,16,32,64
例如: 晶振频率=8MHZ,总线频率=2MHZ,分频因子=32,预置值=625
中断频率=2000000/(32*625)=100HZ
又如: 晶振频率=9.8304MHZ,总线频率=2.4567MHZ,分频因子=1,预置值=65536(0X10000)
中断频率=2457600/(1*65536)=37.5HZ
再如: 晶振频率=9.8304MHZ,总线频率=2.4567MHZ,分频因子=64,预置值=19200(0X4B00)
中断频率=2457600/(64*19200)=2HZ
-------------------------------------------------
初始化程序如下:
//定时器1初始化
//晶振频率=9.8304MHZ,总线频率=2.4567MHZ
//中断频率=总线频率/(分频因子*预置值)=2457600/(64*19200)=2HZ
T1SC=0b01000110 ; //开中断,分频因子=64
T1MODH=0x4B; //预置值=0x4B00
T1MODL=0x00;
-------------------------------------------------