完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
void init() //初始化函数
{ TMOD=0X01; //初始化定时器 TH0=(65536-10)/256; //初值配置 TL0=(65536-10)%256; EA=1; //开总中断 ET0=1; //定时/计数器T0中断允许 TR0=1; } void time0(void) interrupt 1 //定时器中断函数 { TH0=(65536-10)/256; TL0=(65536-10)%256; ++i; if(i>10) { i=0; }; if(i<=zkb) { OE=0; } else OE=1; } 这个是我要用到的定时器中断 void UsartConfiguration() { SCON=0X50; //设置为工作方式1 TMOD=0X20; //设置计数器工作方式2 PCON=0X80; //波特率加倍 TH1=0XF3; //计数器初始值设置,注意波特率是4800的 TL1=0XF3; ES=1; //打开接收中断 EA=1; //打开总中断 TR1=1; //打开计数器 } void Usart() interrupt 4 { if (RI) //接收到字节 { cmdIndex = SBUF; RI = 0; //清零接收中断标志位 SBUF = cmdIndex;//将接收到的数据放入到发送寄存器 cmdArrived = 1; } if (TI) //字节发送完 { TI = 0; //清零发送中断标志位 } //清除发送完成标志位 } 这个是我用到的通讯中断 单独可以运行,为什么放在一个程序就不行了呢????求大神指点迷津 |
|
相关推荐
2个回答
|
|
定时器初始化时是
TMOD=0X01; //初始化定时器 串口初始化时是 TMOD=0X20; //设置计数器工作方式2 要么,直接,TMOD=0x21,要么,把程序对TMOD赋值改成 TMOD|=0X01; //初始化定时器 TMOD|=0X20; //设置计数器工作方式2 |
|
|
|
2楼正解,51的片子,所有功能寄存器赋值养成习惯都用或
|
|
|
|
只有小组成员才能发言,加入小组>>
3309 浏览 9 评论
2988 浏览 16 评论
3490 浏览 1 评论
9050 浏览 16 评论
4084 浏览 18 评论
1169浏览 3评论
602浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
594浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2331浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1894浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 21:42 , Processed in 1.201013 second(s), Total 83, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号