AT89C51单片机利用定时器|计数器T0产生1秒钟的定时,每当一秒定时到来时,更换指示灯点亮,依次循环点亮

这个程序怎么做?附图!这个在网上能找到更具体的吗,还要硬件连接和逻辑程序图!... 这个程序怎么做?附图!

这个在网上能找到更具体的吗,还要硬件连接和逻辑程序图!
展开
 我来答
shangkun200901
2011-12-18 · TA获得超过296个赞
知道小有建树答主
回答量:239
采纳率:51%
帮助的人:109万
展开全部

;仿照例7.11

;TC=M-T/T计数=9E58H(其中T=25ms)

ORG 0000H

LJMP MAIN

ORG 000BH

AJMP BRT0

ORG 0030H

MAIN:

CLR P1

MOV TMOD,#01H;T0为方式1

SETB EA

SETB ET0

SETB TR0

MOV TH0,#9EH

MOV TL0,#58H

MOV R0,#04H

MOV A,#01H

LOOP:SJMP $;等待中断

    ORG 0080H

BRT0:

     DJNZ R0,NEXT

     MOV P1,A

     RL A

     MOV R0,#04H

NEXT:MOV TH0,#9EH

     MOV TL0,#58H

     RETI

     

END

更多追问追答
追问
今天试了一下,有两个错误提示啊!
MOV TH0,#9EH
MOV TL0,#58H
MOV R0,#04H
MOV A,#01H
这4句的前两句
追答
不应该啊。我在wave6000上编译过的啊。仿真也对啊
匿名用户
2011-12-18
展开全部
初始化T0定时50MS,设个计数变量,每定时到了进中断一次+1,加到20次时就是1S,然后更换指示灯点亮,下1S 依次循环点亮。
void main(void)
{
TMOD=0x01; //16位定时模式
TH0=(65536-50000) >> 8;
TL0=(65536-50000) & 255;
TR0=1;
ET0=1;
EA=1;

while(1) ;
}

void timer0() interrupt 1
{
static unsigned char t ,Light = 1;
TF0=0;
if(++t==20)
{
t=0;
//这里加入流水灯程序
P0 = Light;
if(Light > 0x80)Light = 1;
else Light << 1;
}
//重装定时器
TH0=(65536-50000) >> 8;
TL0=(65536-50000) & 255;
}
追问
有汇编程序吗
追答
用Keil编译后,可直接查看编译出来的汇编!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式