- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验:8051Proteus定时计数器仿真
实验:8051+Proteus定时/ 计数器仿真
一、 定时器控制单只LED
/* 名称:定时器控制单只LED
说明:LED在定时器的中断例程控制下不断闪烁。
*/
#includereg51.h
#define uchar unsigned char
#define uint unsigned int
sbit LED=P0^0;
uchar T_Count=0;
//主程序
void main()
{
TMOD=0x00; //定时器0工作方式0
TH0=(8192-5000)/32; //5ms定时
TL0=(8192-5000)%32;
IE=0x82; //允许T0中断
TR0=1;
while(1);
}
//T0中断函数
void LED_Flash() interrupt 1
{
TH0=(8192-5000)/32; //恢复初值
TL0=(8192-5000)%32;
if(++T_Count==100) //0.5s开关一次LED
{
LED=~LED;
T_Count=0;
}
}
二、 TIMER0控制流水灯
/* 名称:TIMER0控制流水灯 说明:定时器控制P0、P2口的LED滚动显示,本例未使用中断函数。
*/
#includereg51.h
#includeintrins.h
#define uchar unsigned char
#define uint unsigned int
//主程序
void main()
{
uchar T_Count=0;
P0=0xfe;
P2=0xfe;
TMOD=0x01; //定时器0工作方式1
TH0=(65536-40000)/256; //40ms定时
TL0=(65536-40000)%256;
TR0=1; //启动定时器
while(1)
{
if(TF0==1)
{
TF0=0;
TH0=(65536-40000)/256; //恢复初值
TL0=(65536-40000)%256;
if(++T_Count==5)
{
P0=_crol_(P0,1);
P2=_crol_(P2,1);
T_Count=0;
}
}
}
}
三、 定时器控制4个LED滚动闪烁
/* 名称:定时器控制4个LED滚动闪烁
说明:4只LED在定时器控制下滚动闪烁。
*/
#includereg51.h
#define uchar unsigned char
#define uint unsigned int
sbit B1=P0^0;
sbit G1=P0^1;
sbit R1=P0^2;
sbit Y1=P0^3;
uint i,j,k;
//主程序
void main()
{
i=j=k=0;
P0=0xff;
TMOD=0x02; //定时器0工作方式2
TH0=256-200; //200us定时
TL0=256-200;
IE=0x82;
TR0=1; //启动定时器
while(1);
}
//T0中断函数
void LED_Flash_and_Scroll() interrupt 1
{
if(++k35) return; //定时中断若干次后执行闪烁
k=0;
switch(i)
{
case 0: B1=~B1;break;
case 1: G1=~G1;break;
case 2: R1=~R1;break;
case 3: Y1=~Y1;break;
default:i=0;
}
if(++j300) return; //每次闪烁持续一段时间
j=0;
P0=0xff; //关闭显示
i++; //切换到下一个LED
}
四、 T0控制LED实现二进制计数
/* 名称:T0控制LED实现二进制计数
说明:本例对按键的计数没有使用查询法,没有使用外部中断函数,没有使用定时或计数中断函数。而是启用了计数器,连接在T0引脚的按键每次按下时,会使计数寄存器的值递增,其值通过LED以二进制形式显示
*/
#includereg51.h
//主程序
void main()
{
TMOD=0x05; //定时器0为计数器,工作方式1,最大计数值65535
TH0=0; //初值为0
TL0=0;
TR0=1; //启动定时器
while(1)
{
P1=TH0;
P2=TL0;
}
}
五、 TIMER0与TIMER1控制条形LED
/* 名称:TIMER0
您可能关注的文档
最近下载
- 2022-2023学年七年级上学期期末考试语文试题(1).docx VIP
- 2024年看守所民警年终个人总结7篇.docx VIP
- 黑布林英语阅读初一7《渔夫和他的灵魂》中文版.pdf
- 垦丁律所:数据出境合规实务100问.pdf VIP
- 人教版八年级数学下学期课后习题与答案(最全).doc
- 2024 年度民主生活会“四个对照”方面(存在问题、原因剖析及整改措施).docx VIP
- 新闻传播伦理与法规教程PPT 新闻传播伦理与法规教程(7).pptx VIP
- 邱霈恩-002领导学(第二章).pptx VIP
- 新闻传播伦理与法规教程PPT 新闻传播伦理与法规教程(9).pptx VIP
- 新闻传播伦理与法规教程PPT 新闻传播伦理与法规教程(10).pptx VIP
文档评论(0)