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

这个程序怎么做?附图!

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

;仿照例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上编译过的啊。仿真也对啊

追问

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

温馨提示:内容为网友见解,仅供参考
第1个回答  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编译后,可直接查看编译出来的汇编!

本回答被提问者采纳

单片机60秒计时器的程序,用AT89C51实现
\/\/1:用AT89C51单片机的定时\/计数器T0产生一秒的 \/\/定时时间,作为秒计数时间,当一秒产生时,秒 \/\/计数加1,秒计数到60时,自动从0开始。单片机 \/\/晶振频率为12MHZ include<reg51.h> define uchar unsigned char define uint unsigned int uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6...

...求c程序 用AT89C51单片机的定时\/计数器T0产生一秒的定时时间,作为秒...
} void t0(void) interrupt 1 using 0 { tcnt++;if(tcnt==4000){ tcnt=0;second++;P0=dispcode[second\/10];P2=dispcode[second%10];} }

关于at89c51单片机 定时中断的问题
用T0定时器定时50ms,采用中断方式,对中断计数20次,就是1秒,再对1秒计数就可以了。其次是显示出计时的秒即可。这个提问有这么多灌水的回答,而且也网友采纳了。你能采纳了,用私信发给你程序。仿真图如下

利用定时器计数器设计一个电路,其功能是每输入1个脉冲,发光二极管状态...
其具体实现方案为将C\/T0定时器\/计数器设置为由引脚高电平启动的方式1定时器T0,初始化将其初值设为0.该计数器的启动过程如下:主程序首先将单片机P1.6脚置为高电平(逻辑1)发出预置闸门信号,该信号经同步电路而产生高电平的同步门信号,从而使单片机引脚变为高电平,C\/T0定时器中的计数器就被启动...

单片机秒表设计
用AT89C51设计一个2位的LED数码显示作为“秒表”,这应该是一个仿真题,可用两位一体的共阴数码管,用定时器T0定时,得到1秒计时。

AT89C51单片机的结构原理与引脚功能
·两个16位定时器\/计数器 ·5个中断源 ·可编程串行通道 ·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路 管脚说明:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I\/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,...

计数器计数,七段数码管从0到9循环显示(用汇编语言)
用AT89C51单片机的定时\/计数器T0产生一秒的定时时间,作为秒计数时间,但一秒产生时,秒计数加1,秒计数加到60时,自动从0开始。单片机晶振频率为12MHz。数码管段选表。延时函数。uchari;变量i;wk=1;打开位选,P0=0xf7;11110111第4位数码管显示,wk=0;关闭位选。while(1)\/\/死循环效果{}。新...

at89c51单片机实现电子时钟,不带闹铃。显示时分秒。求图求程序_百度知...
sbit LED1=P1^4; \/\/温度显示指示 sbit LED2=P1^5; \/\/时间显示指示 sbit LED3=P1^6; \/\/闹钟显示指示 sbit shu1=P2^0;sbit shu2=P2^1;sbit shu3=P2^2;sbit shu4=P2^3;sbit shu5=P2^4;sbit shu6=P2^5;sbit DS=P2^6; \/\/define interface 定义DS18B20接口 sbit beep=P2^7;\/\/...

AT89C51和AT89S51的区别?
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,...

1、 基于AT89C51单片机,利用定时器设计一个两位数码管显示电路。 设计...
这个我仿真过了 是有用的,,,是从00开始显示 到了99会从新开始从00开始加 #include<reg51.h> #define uchar unsigned char #define uint unsigned int uchar code disp[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar code bit_tab[]={0xfe,0xfd}; uchar disp_buf[2]; uc...

相似回答