芯片是12C5616AD-PDIP28。
用ISP中的定时器设置T0为50ms中断,中断程序中用变量fc进行累加,
然后在主程序中实现每秒打印一条信息。
主要代码如下:
- void Timer0_Isr(void) interrupt 1
- {
- fc++;
- }
-
- void Timer0_Init(void) //50毫秒@11.0592MHz
- {
- AUXR &= 0x7F; //定时器时钟12T模式
- TMOD &= 0xF0; //设置定时器模式
- TL0 = 0x00; //设置定时初始值
- TH0 = 0x4C; //设置定时初始值
- TF0 = 0; //清除TF0标志
- TR0 = 1; //定时器0开始计时
- ET0 = 1; //使能定时器0中断
- }
- void main()
- {
- IO_INIT();
- Timer0_Init(); //50毫秒@11.0592MHz
- Uart1_Init(); //115200bps@11.0592MHz
- EA=1;
- while(1)
- {
- if(fc>20)
- {
- printf("\r\ntime----");
- fc=0;
- LED=~LED;
- }
- }
- }
复制代码
串口打印结果:
串口打印的信息反映串口打印的间隔时间并不是1s,这是为什么?
|