完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#define uchar unsigned char #define uint unsigend int uchar flag,num,T0_flag,b,i; uchar code string[]={" This is "}; ***it buzz=P1^4; //定义蜂鸣器 void init(); //初始化 void buzz_1(); void main() //主函数 { init(); while(1) { buzz_1(); if(flag==1) { ES=0; if(num==4||num==0) { ET0=0; TR0=0; buzz=0; } else if(num==1||num==2||num==3) { ET0=1; TR0=1; } for(i=0;i<9;i++) { SBUF=string[i]; while(!ti); TI=0; } SBUF=num; while(!TI); TI=0; ES=1; flag=0; } } } void init() { T0_flag=0; b=0; flag=0; //对串口中断标示位初始化 buzz=0; //蜂鸣器初始化为关闭状态 TMOD=0x20; //确定T0定时器工作方式1,T1定时器工作方式2 TH0=0x4c; //T0定时器高八位装入初值 TL0=0x00; //T0定时器低八位装入初值 用于设置50ms的中断 TH1=0xfd; //T1定时器高八位装入初值 TL1=0xfd; //TI定时器低八位装入初值 设置波特率 为9600 ET0=0; //打开T0 中断 TR0=0; //允许T0中断 TR1=1; //允许T1中断 REN=1; //允许串行接收位 SM0=0; SM1=1; //设置SM0=1,SM1=1时 串口工作方式1 EA=1; //打开总中断 ES=1; //打开串口中断 } void buzz_1() { switch(num) { case 1: b=8; break; case 2: b=4; break; case 3: b=2; break; } if(T0_flag==b && T0_flag!=0) { T0_flag=0; buzz=~buzz; } } void time_1() interrupt 1 //T0定时器 中断 { TH0=0x4c; TL0=0x00; T0_flag++; } void ser() interrupt 4 //串口中断 { RI=0; num=SBUF; flag=1; } 这段代码,串口部分没问题 可以收发数据,但是蜂鸣器部分,不响, 我用T0定时器不工作,跪求高手指点! 万分感谢! |
|
相关推荐
5个回答
|
|
|
|
|
|
要怎么改,求指点,串口中断执行完后, 定时中断 出问题,由于刚学,没什么经验,求牛人指点下! 感激不尽! |
|
|
|
中断一我设置的是50ms ! 用的11.0592MHz的晶振! |
|
|
|
谢谢提醒! 万分感谢! 恍然大悟,我定时器0的工作模式没设置! |
|
|
|
昨天晚上 没上的。。。你问我 我没看到啊 SORRY 不过解决问题就好
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
795 浏览 2 评论
【youyeetoo X1 windows 开发板体验】+ 影音处理和AI模型移植
668 浏览 5 评论
I.MX6ULL-飞凌 ElfBoard ELF1板卡- 移植zbar的方法
845 浏览 0 评论
1508 浏览 3 评论
由于 Windows 无法加载这个设备所需的驱动程序,导致这个设备工作异常?
2409 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
3687 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-3-28 19:57 , Processed in 0.493980 second(s), Total 74, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号