- 1、本文档共101页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
4-5已知负跳边脉冲从51单片机P3.3引脚输入,且该脉冲数少于65535个,试利用中断,统计输入脉冲个数。
4-6测量引脚(P3.3)输入的正脉冲宽度,假设正脉冲宽度不超过定时器的值。
4-7有5台外围设备,分别为EX1~EX5,均需要中断。现要求EX1与EX2的优先级为高,其他的优先级为低,请用51单片机实现,要求画出电路图并编写程序(假设中断信号为低电平),要求执行相应的中断服务子程序WORK1~WORK5。4-7有5台外围设备,分别为EX1~EX5,均需要中断。现要求EX1与EX2的优先级为高,其他的优先级为低,请用51单片机实现,要求画出电路图并编写程序(假设中断信号为低电平),要求执行相应的中断服务子程序WORK1~WORK5。
4-88051单片机内部有几个定时/计数器?它们由哪些专用寄存器组成?
4-98051单片机的定时/计数器有哪几种工作方式?各有什么特点?
4-10定时/计数器作定时用时,其定时时间与哪些因素有关?作计数用时,对输入信号频率有何限制?4-11对于8051单片机,当fosc=6?MHz和fosc=12?MHz时,最大定时各为多少?
4-12若fosc=6?MHz,要求T1定时10?ms,选择方式0,装入时间初值后T1计数器自启动。计算时间初值X,并填入TMOD、TCON和TH1、TL1的值。
4-13要求T0工作在计数器方式(方式0),计满1000个数申请中断。计算计数初值X及填写TMOD、TCON和TH0、TL0。
4-14已知51单片机,fosc=6?MHz,试编写程序,利用T0和P1.7产生如下图所示的连续矩形脉冲。题4-14图4-15试编写程序,使T0每计满500个外部输入脉冲后,由T1定时,在P1.0输出一个脉宽10?ms的正脉冲(假设在10?ms内外部输入脉冲少于500个),已知fosc=12?MHz。
4-16编程,利用定时器T0(工作方式1)产生一个50?Hz的方波,由P1.0输出,晶振频率为12?MHz。
4-17在8051单片机中,已知晶振频率为12?MH,试编程使P1.0和P1.1分别输出周期为2?ms和500?ms的方波。
4-18设晶振频率为6?MHz,试用T0作为外部计数器,编程实现每当计到1000个脉冲,使T1开始2?ms定时,定时时间到后,T0又开始计数,这样反复循环下去。
4-19根据4.3.4节中频率计的所有设计要求,完成频率计的设计。【例4-8】timer_int.c文件。
#includereg51.h
#includeabsacc.h
#includeintrins.h
#defineucharunsignedchar
//定义全局变量
externucharcnt;
//以下为函数声明
voiddelay(ucharx);//下面地址定义中包含使能138芯片的信息
#definePA8255XBYTE[0x80fc]//8255端口A的地址
#definePB8255XBYTE[0x80fd]//8255端口B的地址
#definePC8255XBYTE[0x80fe]//8255端口C的地址
#defineCOM8255XBYTE[0x80ff]//8255命令字的地址
/************8255初始化代码************************/
voidinit_8255(void)
{ COM8255=0x81; //8255命令字,PA/PB均为输出,PC低4位输入,高4位输出
}
/************定时器初始化代码************************/
voidinit_timer(void)
{
TMOD=0x02;//T0为可预置初值的8位定时器
IE=0x82; //开中断,T0中断
}/************T0中断服务例程***********************/
//T0:一次定时0.5?ms,2次为1?ms
voidTimer0_Int(void)interrupt1using1
{
staticucharcnt1=0;
if(cnt==0)
{
if(++cnt1==2) {
cnt1=0; PB8255=PB8255^0x10; //产生方波
}
}
else
PB8255=P
文档评论(0)