用at89c51单片机的定时/计数器T0产生1秒的定时时间,作为秒计数时间,当一秒产生时,秒计数加1,秒计数到60时,自动从0开始。
可以附图吗?(用数码管显示那种)
参考这个:
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar Count;
sbit Dot = P0^7;
uchar code DSY_CODE[]=
{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
uchar Digits_of_6DSY[]={0,0,0,0,0,0};
void DelayMS(uint x)
{
uchar i;
while(--x)
{
for(i=0;i<120;i++);
}
}
void main()
{
uchar i,j;
P0 = 0x00;
P3 = 0xff;
Count =0;
TMOD = 0x01;
TH0 = (65535-50000)/256;
TL0 = (65535-50000)%256;
IE = 0x82;
TR0 = 1;
while(1)
{
j = 0x7f;
for(i=5;i!=-1;i--)
{
j=_crol_(j,1);
P3 = j;
P0 = DSY_CODE[Digits_of_6DSY[i]];
if(i==1) P0 |= 0x80;
DelayMS(2);
}
}
}
void Time0() interrupt 1
{
uchar i;
TH0 = (65535-50000)/256;
TL0 = (65535-50000)%256;
if(++Count !=2) return;
Count = 0;
Digits_of_6DSY[0]++;
for(i=0;i<=5;i++)
{
if(Digits_of_6DSY[i] == 10)
{
Digits_of_6DSY[i] = 0;
if(i != 5) Digits_of_6DSY[i+1]++;
}
else break;
}
}
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...
单片机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...
...用AT89C51单片机的定时\/计数器T0产生一秒的定时时间,作为秒计数时 ...
} void t0(void) interrupt 1 using 0 { tcnt++;if(tcnt==4000){ tcnt=0;second++;P0=dispcode[second\/10];P2=dispcode[second%10];} }
计数器计数,七段数码管从0到9循环显示(用汇编语言)
用AT89C51单片机的定时\/计数器T0产生一秒的定时时间,作为秒计数时间,但一秒产生时,秒计数加1,秒计数加到60时,自动从0开始。单片机晶振频率为12MHz。数码管段选表。延时函数。uchari;变量i;wk=1;打开位选,P0=0xf7;11110111第4位数码管显示,wk=0;关闭位选。while(1)\/\/死循环效果{}。新...
单片机秒表设计
用AT89C51设计一个2位的LED数码显示作为“秒表”,这应该是一个仿真题,可用两位一体的共阴数码管,用定时器T0定时,得到1秒计时。
AT89C51单片机,如何实现延迟一秒
其实可以用C语言实现的,先要定义好定时器的初值 不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期 机器周期=12\/n(n指晶振频率),假设你要定时的时间为M 那么定时的初值为:M\/机器周期=初值;TH0=(65536-初值)%256;TL0=(65536-初值)\/256;将(65536-初值)...
AT89C51中断程序设计两位数码管0到99,工作方式1,定时计数,1s,不用C语 ...
SECOND EQU 30H; 定义 TCOUNT EQU 31H ;定义 ORG 00H ; 起始 LJMP START; 跳转 ORG 1BH ; 中断矢量地址 LJMP INT0X ; 跳转 START:MOV SECOND,#00H ; 设置计数0送入SECOND MOV TCOUNT,#00H ; 设置计数0送入TCOUNT MOV TMOD,#10H ; 设置计数器1 MOV TH1,#(65536-50000) \/ 256 ...
at89c51单片机的定时器t1用作定时方式是
at89c51单片机的定时器t1用作定时方式有3种,默认的是方式0,为13位计数方式,这种方式很少用,完全可以用方式1代替。方式1为16位计数,最多计65536个机器周期,假设晶振频率为12MHz,机器周期就是1us,所以,最长定时的时间是65536×1us。方式2,是自动装载8位计数方式。常用于串口通信控制波特率。
单片机用c语言编一个程序,要求用内部定时\/计数器对30个脉冲进行计数,并...
功能:内部定时\/计数器记录脉冲个数和这些脉冲通过后所用的时间。硬件:单片机用AT89c51,12M晶振。原理:当门控位GATE为“1”时,TR0\/1=1,INT0\/1才能启动定时器。利用这个特性可以测量外部输入脉冲的宽度。分析:设外部脉冲由(P3.2)输入,T0工作于定时方式1(16位计数),GATE设为1.测试时,应...
利用定时器\/计数器T0产生2秒钟的定时,AT89C51,有大神吗?急急急?_百度...
很简单,因为定时器的计数器是16位的,也就是最大65536us=65ms 所以这里设置20ms中断一次。设置2个变量 cnt1和cnt2。每次20ms中断,2个变量各加1。那么当cnt1==100的时候,也就是过了2秒,切换LED,同时cnt1置零。当cnt2==5的时候,也就是过了0.1秒,让LED=~LED,就可以达到0.2秒闪烁...