微控制器60秒計時器的程式,用AT89C51實現

時間 2021-08-30 10:29:00

1樓:匿名使用者

//1:用at89c51微控制器的定時/計數器t0產生一秒的//定時時間,作為秒計數時間,當一秒產生時,秒//計數加1,秒計數到60時,自動從0開始。微控制器//晶振頻率為12mhz

#include

#define uchar unsigned char#define uint unsigned intuchar code table=;

void display(uchar fen,uchar miao);

uchar a,fen,miao,shu;

void delay(uint z);

void init();

void main()

}void timer0() interrupt 1}void init()

void display(uchar fen,uchar miao)void delay(uint z)

2樓:匿名使用者

彙編源程式

second equ 30h

org 0

start: mov second,#00hnext: mov a,second

mov b,#10

div ab

mov dptr,#table

movc a,@a+dptr

mov p0,a

mov a,b

movc a,@a+dptr

mov p2,a

lcall dely1s

inc second

mov a,second

cjne a,#60,next

ljmp start

dely1s: mov r5,#100

d2: mov r6,#20

d1: mov r7,#248

djnz r7,$

djnz r6,d1

djnz r5,d2

rettable: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh

endc語言源程式

#include

unsigned char code table=;

unsigned char second;

void delay1s(void)

void main(void)

p0=table[second/10];

p2=table[second%10];}}

3樓:匿名使用者

second equ 30h

org 0

start: mov second,#00hnext: mov a,second

mov b,#10

div ab

mov dptr,#table

movc a,@a+dptr

mov p0,a

mov a,b

movc a,@a+dptr

mov p2,a

lcall dely1s

inc second

mov a,second

cjne a,#60,next

ljmp start

dely1s: mov r5,#100

d2: mov r6,#20

d1: mov r7,#248

djnz r7,$

djnz r6,d1

djnz r5,d2

rettable: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhend

4樓:匿名使用者

用定時器做的...試一下

#include

unsigned int i=0;

void main()

}void timer() interrupt 1

51微控制器同時使用兩個計時器的問題

同時用兩個中斷肯定會衝突 定時器1完全可以不用,主程式只管顯示就行,定時器0中斷程式中更新計時數值 還可以嘗試在定時器0的中斷程式裡關閉定時器1,交且將定時器0的中斷優先順序設高 就你現在的程式可以正常掃描顯示的呀,就是有點閃爍的效果。但不知道,這是和誰學習的,數碼管顯示要用定時器定時,中斷一次顯示...

微控制器的程式計數器PC的構成,微控制器中的程式計數器PC用來做什麼

他就是一個單元,只是這個單元裝的是地址而已。給你舉個通俗的例子,假設你是一個網咖唯一的網管,任務是負責網咖600號電腦的檢查。你上班開始,就從1號電腦檢查,有問題維修,沒問題就檢查2號,接著是3號。檢查第8號機的時候,8號機主告訴你說 19號機有問題,這個時候,你離開8號機之後,不是去9號,而去19...

51微控制器計數器怎麼用,51微控制器計數器怎麼用

51微控制器是基礎入門的一個微控制器,還是應用最廣泛的。51微控制器的定時 計數器的概念 微控制器中,脈衝計數與時間之間的關係十分密切,每輸入一個脈衝,計數器的值就會自動累加1,只要相鄰兩個計數脈衝之間的時間間隔相等,則計數值就代表了時間的流逝,因此,微控制器中的定時器和計數器其實是同一個物理的電子...