完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
想用stc15f2k60s2定时器间隔定时,发现无法进入中断程序如下 u8 cnt = 0;
void main() { u8 j; u8 temp = 0x01; AUXR |= 0X80;//定时器时钟1T模式 TMOD &= 0X00;//定时器模式为16位自动重装 TL0 = 0X00; TH0 = 0X28; //TF0 = 0; //清除TF0标志 TR0 = 1; //定时器0开始计时 EA = 1; ET0 = 0; P1 = temp; while(1) ; /*{ for(j = 0; j<7;j++) { if(cnt == 5) { cnt = 0; temp <<= 1; P1 = temp; } if(temp == 0x80) break; } for(j = 0;j<7;j++) { if(cnt == 5) { cnt = 0; temp >>= 1; P1 = temp; } if(temp == 0x01) break; } } } void timer0Init() interrupt 1 using 1 { P1 = !P1; u8 i = 0; TL0 = 0X00; TH0 = 0X28; i++; if(i == 40) cnt++; } 用了官方的例子发现也不行 三脸懵逼 typedef unsigned char BYTE; typedef unsigned int WORD; //----------------------------------------------- #define FOSC 11059200L #define T1MS (65536-FOSC/1000) //1T模式 //#define T1MS (65536-FOSC/12/1000) //12T模式 //----------------------------------------------- /* Timer0 interrupt routine */ void tm0_isr() interrupt 1 using 1 { P1 = ! P1; //将测试口取反 } //----------------------------------------------- /* main program */ void main() { P1M0 = 0x00; P1M1 = 0x00; AUXR |= 0x80; //定时器0为1T模式 // AUXR &= 0x7f; //定时器0为12T模式 TMOD = 0x00; //设置定时器为模式0(16位自动重装载) TL0 = T1MS; //初始化计时值 TH0 = T1MS >> 8; TR0 = 1; //定时器0开始计时 ET0 = 1; //使能定时器0中断 EA = 1; P1 = 0XFF; while (1); } |
|
相关推荐
6个回答
|
|
你在中断里就让灯一直亮着,然后看看到底是不是没进中断
|
|
|
|
端口初始化 是在头文件里面定义的
|
|
|
|
你定时器中断充许没有打开,"ET0=0;"定时器如何进入中断!
|
|
|
|
我第一个自己编写的程序 ET0 是等于0的呢
|
|
|
|
仔细看了下数据手册 ET0 = 1为定时器0开中断
|
|
|
|
这个问题 比较白痴 已经解决了 多谢大家的答复
|
|
|
|
只有小组成员才能发言,加入小组>>
3209 浏览 9 评论
2896 浏览 16 评论
3402 浏览 1 评论
8844 浏览 16 评论
3997 浏览 18 评论
9627浏览 3评论
1004浏览 3评论
520浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
523浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2250浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-30 18:29 , Processed in 1.097632 second(s), Total 88, Slave 69 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号