是这样的: 我想用 定时器 0 来处理喂狗, 定时器1 来处理串口
现在问题是,如果我不把 TR1=1; 注释掉 则 void timer0(void) interrupt 1 运行不怎么样啊
因为 P33 是接在一个 LED 上的 LED 不闪啊
是不是不能同时开启 T0 和 T1 啊 谢谢! 水手+舟舟 18:31:10 //-------------------------------------头文件-------------------------------------- #include <reg52.h> #include <absacc.h> #include <intrins.h> //-------------------------------------头文件--------------------------------------
//********定义引脚************************************* sbit P33 = P3^3; //喂狗 sbit D0 = P0^0; //喂狗 //********定义引脚*************************************
//**************定义变量************************************************* int WDogZdJs; //喂狗中断计数 char rece[5]; //接收的字符 int j; bit receive; //接收标志置位 //**************定义变量*************************************************
void delay() { int i,j; for(i=0;i<100;i++) { for(j=0;j<10;j++) { ; } } }
void Sendtex() { SBUF='1'; while(!TI); TI=0; }
/* void ComInStr() interrupt 4 //串行口中断 { if(RI) { if (j>4) { j=0; } rece[j]=SBUF; j++; if(j>4) receive=1; //接收标志置位 RI=0; } } */
void timer0(void) interrupt 1 //喂狗中断程序 { TH0 = (65536-5000)/256; //重载计数初值 每 5 ms 中断一次 TL0 = (65536-5000)%256; //这是手动装置,如果 T0 为模式 1 的话,必须要手动装入 //如果如果 T0 为模式 2 的话,只要初始化了, //则在这里可以不要 TH0 = (65536-5000)/256; TL0 = (65536-5000)%256; WDogZdJs ++; if ( WDogZdJs >= 10 ) { P33 =! P33; //不停喂狗 WDogZdJs = 0; } }
void main() { delay(); P0 = 0xff; P1 = 0xff; P2 = 0xff; P3 = 0xff; P33 =! P33; EA = 1 ; //允许中断 ET0 = 1; //T/C0 开中断(定时器0/计数器0) ET1 = 1; //T/C0 开中断(定时器1/计数器1) TMOD=0x21; //定时器1模式1 定时器0模式1 //---------------------------处理串口中断--------------------------------------- ES = 1 ; //允许串行中断 SCON=0x50; //串行口工作方式1, 10 位异步收发,波特率由定时器控制 PCON |= 0x00; TL1=0xFA; TH1=0xFA; //22.1184M晶振 波特率9600 TR1=1; //启动定时器1/计数器1 //---------------------------处理串口中断--------------------------------------- //------------------------------处理中断喂狗------------------------------------ TH0 = (65536-1000)/256; //预置计数初值,每 5 ms 中断一次 TL0 = (65536-1000)%256; TR0 = 1; //启动定时器0/计数器0 //------------------------------处理中断喂狗------------------------------------ while(1) { //if (D0==0) //{ //Sendtex(); //} //if(receive) // { // receive=0; // }//receive ; } }
|