|
发表于 2013-3-21 21:06:21
|
显示全部楼层
给你1个例子,自己看- void HardInit(void)
- {
- EA = 0; //关闭所有中断
-
- /*定时器1,2模式设置*/
- TMOD = (((unsigned char)0x02)<<1)| //timer0工作方式选择,0-13位定时器/计数器工作模式,1-8位定时器/计数器工作模式
- //2-16位定时器/计数器工作模式,3-用作2个8位定时器/计数器工作模式
- (((unsigned char)0x00)<<2)| //timer0,0-定时器,1-计数器
- (((unsigned char)0x00)<<3)| //timer0,1-T/C启动受双重信号的控制,0-T/C启动仅受TRx位控制
- (((unsigned char)0x01)<<5)| //timer1工作方式选择,0-13位定时器/计数器工作模式,1-8位定时器/计数器工作模式
- //2-16位定时器/计数器工作模式,
- (((unsigned char)0x00)<<6)| //timwer1,0-定时器,1-计数器
- (((unsigned char)0x00)<<7); //timwer1,1-T/C启动受双重信号的控制,0-T/C启动仅受TRx位控制
- /*定时器0设置*/
- TH0 = 0xf7;
- TL0 = 0x85;
- /*定时器1设置*/
- //作为波特率发生器
- //SMOD = 0; //不加倍
- TL1 = 0xFD; //11.0592MHz 0xFDH-9600 */
- TH1 = 0xFD;
- /*定时器2设置*/
- T2CON = 0x00; //自动重装,16位
- RCAP2H = 0xBC; //50ms中断一次
- RCAP2L = 0x00;
- TH2 = 0xBC;
- TL2 = 0x00;
- /*串口设置*/
- SCON = 0x50;
- PCON &= 0x7F;
- /*外部中断0,1设置*/
- //IT0 = 1; //跳变触发
- //IT1 = 1; //跳变触发
- /*中断优先级设置*/
- PX0 = 0; //外部中断0的优先级位
- PT0 = 0; //定时器0优先级位
- PX1 = 0; //外部中断1的优先级位
- PT1 = 0; //定时器1的优先级位
- PS = 0; //串口中断的优先级位
- PT2 = 0; //定时器2的优先级位
- /*中断使能设置*/
- EX0 = 0; //外部中断允许位
- ET0 = 1; //定时器0中断允许位
- EX1 = 0; //外部中断1允许位
- ET1 = 0; //定时器1中断允许位
- ES = 1; //串行通讯中断允许位
- ET2 = 1; //定时器2中断允许位
- EA = 1; //开总中断
- TR0 = 0; //定时器0启动
- TR1 = 1; //定时器1启动
- TR2 = 1; //定时器2不启动
- }
复制代码 注意:使用了中断,晶振11.0592 |
|