導航:首頁 > 操作系統 > 用單片機做時鍾

用單片機做時鍾

發布時間:2025-09-08 04:12:14

㈠ 關於用51單片機做一個電子時鍾的問題


程序中好像還沒有自動加時的部分,並且按鍵處理還沒有消抖措施


不多說了,上程序,俺剛剛為你編寫的,測試的時候使用的埠和你的不一樣


在我的開發板上測試成功後,按照你的板子埠做了修改


如果你直接復制到你的程序中不能使用,檢查及更改一下埠即可


如果滿意記得採納哦,若有疑問可以隨時向我提問


/***************************************************************************/

//#include<stdio.h>

#include<reg51.h>

sbit p20=P2^0; sbit p21=P2^1; sbit led=P2^7;

char dis_2[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//數碼管顯示編碼

unsigned int h,m,s,t,n;

/***************************************************************************/

void delay(char hs)//延時函數

{char hk;for(;hs>0;hs--){for(hk=100;hk>0;hk--);}}

/***************************************************************************/

void XS(unsigned int xh,unsigned int xs) //顯示子函數

{

char d1,d2,d3,d4;

d1=(xs/1)%10; d2=(xs/10)%10;

d3=(xh/1)%10; d4=(xh/10)%10;


P0=dis_2[d1]; P1=0x08; delay(10); P1=0x00;//秒個位

P0=dis_2[d2]; P1=0x04; delay(10); P1=0x00;//秒十位

P0=0x7f; P1=0x04; delay(10); P1=0x00;//小數點

P0=dis_2[d3]; P1=0x02; delay(10); P1=0x00;//時個位

P0=dis_2[d4]; P1=0x01; delay(10); P1=0x00;//時十位

}

/***************************************************************************/

void main(void)

{

TH0=(65536-1000)/256; TL0=(65536-1000)%256;

TMOD=0x01; EA=1; ET0=1; TR0=1;//定時器初始化

while(1)//主循環

{

if(p20==0){delay(10);if(p20==0){h++;if(h>23){h=0;}}while(!p20){XS(h,m);}}

if(p21==0){delay(10);if(p21==0){m++;if(m>59){m=0;}}while(!p21){XS(h,m);}}

XS(h,m);//調用數碼管顯示函數

}

}

/***************************************************************************/

void int1() interrupt 1 //定時器中斷

{

TH0=(65536-1000)/256; TL0=(65536-1000)%256; n++;t++;

if(t>500){t=0;led=~led;}//LED閃爍

if(n>1000){n=0;s++;}//如果達到一秒,秒加一

if(s>59){s=0;m++;}//如果達到一分,分加一

if(m>59){m=0;h++;}//如果達到一小時,小時加一

if(h>23){h=0;}//如果達到24小時,小時清零

}

/***************************************************************************/

㈡ 用單片機做電子時鍾需要的材料

做電子時鍾需要的材料:
1 6個七段數碼管(2個顯示:0~23小時 、2個顯示:0~59分、2個顯示:0~59秒)
2 6個三極體 作為 6個七段數碼管的驅動
3 一個51單片機(P1口作為6個七段數碼管的段形控制、P2口作為七段數碼管的位控、動態顯示)
4 需要4個微動按鈕,可以分別用來設置或修改小時、分、秒的按鍵。
5 需要電阻或電阻排(220歐姆、10K)
6 最後就是需要焊接工具:電烙鐵一把20~30瓦、焊錫一卷。
7 電路板 可以使用簡易的實驗電路板

呵呵 滿意 就選滿意回答啊

㈢ 單片機電子鍾原理圖,幫我大概解釋一下這個圖的工作原理就可以了,謝謝。帶圖!5分

本電子鍾採用PIC16C55單片機控制,適於溫室的定時恆溫或自來水的定時定壓控制等。PIC16C55單片機工作電壓為2.5~6.25V,功耗低、驅動能力強。本電子鍾可以控制一路負載在24小時內的3次開/關;一個雙限觸發的定時輸出口,既可接傳統的功率保持型繼電器,也可接脈沖繼電器。本機用四位LED數碼管掃描式顯示,還有消隱(省電)工作方式,使用起來非常靈活、方便。

一、 電子鍾工作原理

電子鍾電路見圖1。RB7口是定時指示端,在定時開期間輸出高電平,驅動V1發光,該口也可經緩沖作定時輸出口;RB6是雙限觸發控制的定時輸出口,其工作方式是:在RB7高電平期間,若RB1為高電平,則RB6輸出高電平;若RB0為高電平,RB6輸出低電平;若RB1、RB0同為低電平,RB6保持原態; 同為高電平時,RB6輸出低電平。RB5、RB4用於驅動脈沖繼電器,RB6上升沿觸發RB5輸出高電平開脈沖;在RB6下降沿觸發RB4時,RB4端輸出高電平關脈沖,開/關脈沖的持續時間均為125ms。

圖 1

RB3是消隱控制器,接高電平(即SK1閉合)時,顯示屏及秒閃正常;否則,顯示消隱。顯示消隱時,時鍾及各控制邏輯都正常運行,如忽略RB4至RB7各口的驅動電流,則在3V供電時,整機電流不足20μA,即兩節5號電池可用數月!RB2選擇數碼管極性,RB2為低電平,使用共陰LED;RB2為高電平,則用共陽LED。數碼管的極性是在上電初始化時,根據 RB2口狀態確定的,工作過程中改變RB2的電平則不起作用。

本機設S1~S4四個按鍵,S1是功能選擇鍵,S2是小時增量調整,S3是分鍾增量,S4用於分鍾減量調節,其使用方法為:

上電時,RB5至RB7均為低電平,RB4端送出一個關脈沖,使SK1閉合,整機正常顯示、工作,RC7口送出秒閃脈沖,RC6~RC0送欄位碼。RA3~RA0分別為10時、時、10分、分位的位碼輸出。這時,按一下S2或S3(時增量/ 分增量鍵),可使RB7端置位或復位。

在正常走時期間,秒閃正常;在校對或設置定時時,秒停閃。例如:在正常走時期間,按一下S1鍵,秒閃停止,屏幕顯示J-,表示可以校對時間。這時再按S2~S4中任一鍵,屏幕顯示現在時間,但秒不閃,此刻可按S2~S4校對時鍾。再次按S1,屏幕顯示 1∪,表示可以設定第一次開時間,此時按S2~S4對時間進行查看及設置。繼續按S1,系統顯示1∩,表示可設置第一次關時間……依次進行。設置好系統及 3次開關時間後,整機回到正常顯示狀態,秒閃恢復。

如欲取消某次開/關定時,只需把該次的開與關時間設置成相同值即可。

筆者曾把該時鍾用於定時定壓供水控制系統,RB6端用於驅動繼電器(也可用RB5與RB4兩端驅動脈沖繼電器),RB1端接水壓(水位)的低限輸入,RB0 端接高限輸入,設置好定時,一個簡易的定時定壓自動供水系統即告完成。

二、 編程技巧

PIC16C55單片機程序存儲器只有512位元組,加上採用外接32768Hz晶體振盪方式,時鍾速度較低,因此,統籌好系統的工作時序與人機界面之間的關系是軟體設計成敗的關鍵。本機編程採用如下方案:軟體工作流程見附圖2。

圖 2

PIC16C55單片機的一個機器周期是4個時鍾周期,不難算出,本系統中每秒有8192個機器周期。在編制軟體時,先設定單片機內部定時計數器F1的計數方式為機器周期的64分頻。這樣,每當F1溢出時,系統遞加2秒。平時,系統每128個機器周期內用RC口與RA口驅動掃描一次顯示屏,可保證每秒內掃描64次顯示屏,基本上無閃爍感。而 128個機器周期正是F1的第0位(為便於敘述以下簡記為F1?0)每次下降沿的間隔時間,我們可以編一段程序,當F1?0的下降沿到來時,掃描一次顯示屏,每當F1的低4位為全0時(125ms一次)使系統檢測一次RB口與按鍵狀態,並進行相關處理,部分相關程序如下:

WAIT BTFSC 1,0 ;等待F1?0的下降沿,編程時

GOTO WAIT ;要保證每次下降沿前到此

MOVFW 1

SKPNZ

GOTO CLOCK ;F1=0,滿2秒,轉時鍾處理

ANDLW 0FH ;屏蔽F1高4位

SKPZ

GOTO DISPLAY;F1低4位不為0,轉顯示

MOVLW 0C0H ;滿125mS,使RB口脈沖復位

ANDWF 6,1

MOVLW 0FH ;檢測按鍵

TRIS 7

MOVFW 7

ANDLW 0FH ;保留按鍵數據

SKPZ

GOTO AN;有鍵值,轉按鍵處理

DISPLAY …… ;顯示掃描,定時管理RB口

CLOCK …… ;時鍾,定時處理程序

AN …… ;按鍵管理程序

㈣ 用AT89S51(單片機)設計一個電子鍾

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;20h.1半點標示位
;20H.2鬧鍾設置中........標示,為了顯示區別用
;20H.3鬧鍾設置時間CHECK到,使能標志位
;20H.5開/關鬧鍾設置中........標示;
;20H.6鬧鍾1開關標志位
;20H.7鬧鍾2開關標志位
;psw.5用來做顯示開關標志位
;21,22,23,24這里設置第一個鬧鍾的時間
;25,26,27,28這里設置第二個鬧鍾的時間
;29H
;P0口輸出數碼管段碼,
;P2口 輸出位選信號
;
;70H存放P1.0--3按鈕值,
;71H--78H存放當前系統定時時間;
;78H 77H 76H 75H 74H 73H 72H 71H
; 星期* 小時 分鍾 秒鍾
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ts equ 24h ;這里設置`24小時周期制
trr equ #0bbh ;這個是溫度,晶振等的時間補償值,
org 0000h ;定時太慢此值調大,定時太快調小;
jmp main
;org 0bh ;定時器0中斷入口矢量
;jmp bz
org 1bh ;定時器1中斷入口矢量
jmp t1int
org 0100h ;主程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;主程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
main:clr p3.0; ;關繼電器
mov sp,#30h
mov r3,#20
mov tmod,#10h
;mov tl0,#06h ;定時器1,方式1,定時 50 MS;
;mov th0,#06h
mov tl1,#0b0h
mov th1,#3ch
mov ie,#88h ;開定時器1中斷
;mov 65h,#5
; mov 66h,#100
;mov 64h,#4
;clr psw.5
clr p3.0
setb pt1 ;設置T1為高優先順序中斷
;setb tr1
clr tr1 ;開啟T1中斷
acall send ;71h--78h 清零;
acall send1 ;20h--29h 清零;
dd: acall daa ;進行十進制調整71H-79H
;acall compare ;第一鬧鍾
;acall compare1 ;第二鬧鍾 設置值
;acall sound
acall disp ;數碼管顯示,78H--71H分別對應著8個數碼管顯示
acall key_scanf ;按鈕控制
acall time_adj ;時間調整
acall lasttime ;調用上一次的設置值為當前定時值
;acall alarm1_set ;設置定時開/關鬧鍾
ajmp dd

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;調用上次值為設置時間
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
lasttime:push acc
mov a,70h
jnb acc.2,return1
clr p3.0; 緊急暫停按鈕,按下後暫停,並把上次設定值恢復.
clr tr1
mov 73h,21h
mov 74h,22h
wait7:acall disp
acall key_scanf
mov a,70h
jnb acc.0,wait7
mov 71h,#0
mov 72h,#0
mov 79h,#0
mov tl1,trr
mov th1,#3ch
mov r3,#20
setb tr1
setb p3.0
return1:pop acc
ret

daa: push acc ;對當前系統時間進行十進制調整
mov 71h,79h
mov r1,#71h
cjne @r1,#10,s2
mov 71h,#0h
mov 79h,#0
inc 72h
mov r1,#72h
cjne @r1,#6,s2
mov 72h,#0h
dec 73h
mov r1,#73h
cjne @r1,#255,s2
dec 74h
mov 73h,#9
s1: pop acc
ret
s2: mov r1,#73h
cjne @r1,#0,s1
mov r1,#74h
cjne @r1,#0,s1
clr p3.0
clr tr1
sjmp s1

h_half: ;半點CHECK
mov r1,#73h
mov a,74h
swap a
xchd a,@r1
cjne a,#29h,o25 ;CHECK 當前時間是否為29分鍾
xchd a,@r1
mov r1,#71h
mov a,72h
swap a
xchd a,@r1
cjne a,#59h,o25 ;CHECK 當前時間為59秒?
setb tr0 ;啟動T0
setb 20h.1 ;enable 半點flag bit
o25: xchd a,@r1
ret
compare: ;鬧鍾1設置時間與當前時間比較
push acc
jnb 20h.6,nequ ;鬧鍾1開/關標志位
mov a,73h
cjne a,21h,nequ ;分低位
mov a,74h
cjne a,22h,nequ ;分高位
mov a,75h
cjne a,23h,nequ ;小時低位
mov a,76h
cjne a,24h,nequ ;小時高位
setb 20h.3 ;到鬧鍾設置時間,使能鬧鍾報警標志位
nequ:pop acc
ret

compare1: ;鬧鍾2設置時間與當前時間比較
push acc
jnb 20h.7,nequ33 ;鬧鍾2開/關標志位
mov a,73h
cjne a,25h,nequ33
mov a,74h
cjne a,26h,nequ33
mov a,75h
cjne a,27h,nequ33
mov a,76h
cjne a,28h,nequ33
setb 20h.3 ;到鬧鍾設置時間,使能鬧鍾報警標志位
nequ33:
pop acc
ret

sound:
acall h_half ;check 是否半點?
jb 20h.1,s23 ;半點則返回
jb 20h.0,s23
mov r1,#73h
mov a,74h
swap a
xchd a,@r1
cjne a,#59h,s25
xchd a,@r1
mov r1,#71h
mov a,72h
swap a
xchd a,@r1
s20: cjne a,#56h,s21
ajmp s26
s21: cjne a,#58h,s22
ajmp s26
s22: cjne a,#59h,s25
setb tr0
ajmp s26
s25: xchd a,@r1
s23: ret
s26: jb 20h.0,s25
setb tr0
xchd a,@r1
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;T0中斷服務程序,報時鈴音信號輸出
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

bz: djnz 64h,rrr
jb 20h.3,alarmsign;鬧鍾到點報時有效
jb 20h.1,next ;半點報時
mov 64h,#4 ;0.5KHZ
ajmp justh
alarmsign:
mov 64h,#1; 2KHZ信號
justh:
djnz 66h,ccc
mov 66h,#100
djnz 65h,ccc ;產生1000次中斷後關中斷
mov 65h,#5 ;響0.5秒
setb 20h.0
clr tr0
reti

next:mov 64h,#2 ;1KHZ信號,半點報時音
ccc: jb 20h.3,cc
cpl p1.4 ;半點報時輸出聲音信號
rrr: reti
cc: cpl p1.4 ;鬧鍾報時輸出聲音信號
reti

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;T1中斷服務程序,定時器主時鍾;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

t1int:
clr ea
mov tl1,trr
mov th1,#3ch
djnz r3,sd ;20*50MS=1S
mov r3,#20
;cpl p1.4
inc 79h
clr 20h.0
clr 20h.1 ;半點報時標志清零
jb 20h.3,sdd ;鬧鍾CHECK有效與否?
clr tr0 ;關T0
sd: setb ea
reti
sdd: setb tr0 ;開T0,即開鬧鈴聲音
setb ea
reti
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;顯示子函數
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
dispnum1:; 顯示
ajmp disp_num
disp:
push acc
;jb 20h.5,dispnum1;開/關鬧鍾設置中界面...........
;jb 20h.2,alarmcheck;鬧鍾設置時間中界面..........
jb psw.5,closedisp
mov r2,#01h;位選通信號輸出到P2口
mov r5,#2; 顯示的位數循環控制
mov r0,#73h;分別取出內存76H-71H
cjne r3,#10,dot1;在小時和分之間閃爍DOT point
dot1:jnc dsp1
orl 73h,#10h
;dot1:cjne r3,#11,dsp1
;anl 73h,#0efh
dsp1:mov a,r2
;cpl a
mov p2,a
mov a,@r0
dsp2:mov dptr,#bcd
movc a,@a+dptr
mov p0,a
acall delay
mov a,r2
rl a
mov r2,a
inc r0
djnz r5,dsp1
anl 73h,#0efh
pop acc
ret
closedisp:; 關顯示
acall delay
mov p0,#0ffh
mov p2,#0
pop acc
ret

;;;;;;;;;;;;;;;;;鬧鍾的定時設置顯示
alarmcheck:
mov r2,#01h
mov r5,#2 ;兩位顯示22-21H對應定時設置值
mov r0,#21h
dsp21:
mov a,r2
;cpl a
mov p2,a
mov a,@r0
mov dptr,#bcd
movc a,@a+dptr
mov p0,a
acall delay
mov a,r2
rl a
mov r2,a
inc r0
djnz r5,dsp21
pop acc
ret
bcd:; 共陽接法數碼管段碼表
db 0c0h,0f9h,0a4h,0b0h
db 99h,92h,82h,0f8h
db 80h,90h,88h,83h
db 0c6h,0a1h,86h,8eh; 不帶小數點七段
db 40h,79h,24h,30h,19h
db 12h,02h,78h,00h,10h
db 0ffh,0bfh,7fh,3fh; 帶小數點七段
delay:mov r6,#4h
tm: mov r4,#0h
ee: djnz r4,ee; 延時2048US=2MS
djnz r6,tm
ret

send:mov r7,#9; 初始化設置
mov r0,#71h
mov a,#0h
ss: mov @r0,a
inc r0
djnz r7,ss
mov 78h,#1h
mov 77h,#01ah
;mov 71h,#1
;mov 72h,#2
;mov 73h,#3
;mov 74h,#4
ret
send1:; 初始化
mov r7,#10
mov r0,#20h
mov a,#0
ss1: mov @r0,a
inc r0
djnz r7,ss1
ret

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;開/關鬧鍾界面顯示
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
disp_num:
mov p2,#0f7h
mov a,29h ;當前要操作的鬧鍾號碼
mov dptr,#bcd
movc a,@a+dptr
mov p0,a
acall delay
pop acc
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
key_scanf:; 按鈕處理
push acc
mov 70h,#0
orl p1,#0fh
mov a,p1
cpl a
anl a,#07h
jz nokey1
acall daa
acall disp
mov a,p1
cpl a
anl a,#07h
jz nokey1
mov 70h,a
key_wait:; 等按鈕放下
acall daa
acall disp
mov a,p1
cpl a
anl a,#07h
jnz key_wait
mov a,70h
jnb acc.1,nokey1
cpl psw.5
nokey1:; 無按鈕
pop acc
ret

a_on_off:
jnb 29h.0,iii
cpl 20h.6
iii: jnb 29h.1,out_2
cpl 20h.7
out_2:
ajmp alarmnum
alarmnum:
setb 20h.5
acall daa
acall disp
acall key_scanf
clr 20h.5
mov a,70h
jb acc.0,a_on_off
jb acc.1,alar_adj_1
jb acc.2,a_num_inc
acall numb
ajmp alarmnum
alarm1_set:
push acc
mov a,70h
jb acc.1,alarmnum
alarm1_out:
clr 20h.2
pop acc
ret
a_num_inc:
inc 29h
mov a,29h
anl a,#0fh
cjne a,#3,alarmnum
anl 29h,#0
ajmp alarmnum
alar_adj_1:
setb 20h.2
acall daa
orl 21h,#10h
acall disp
anl 21h,#0fh
acall key_scanf
mov a,70h
jb acc.1,hadj_1
jb acc.2,minc_1
ajmp alar_adj_1
madj_2:
acall daa
orl 25h,#10h
acall disp
anl 25h,#0fh
acall key_scanf
mov a,70h
jb acc.1,hadj_2
jb acc.2,minc_2
ajmp madj_2
hadj_1:
acall daa
orl 23h,#10h
acall disp
anl 23h,#0fh
acall key_scanf
mov a,70h
jb acc.1,madj_2
jb acc.2,hinc_1
ajmp hadj_1
hadj_2:acall daa
orl 27h,#10h
acall disp
anl 27h,#0fh
acall key_scanf
mov a,70h
jb acc.1,alarm1_out
jb acc.2,hinc_2
ajmp hadj_2
minc_1:
inc 21h
mov r1,#21h
cjne @r1,#10,alar_adj_1
mov 21h,#0
inc 22h
mov r1,#22h
cjne @r1,#6,alar_adj_1
mov 22h,#0h
ajmp alar_adj_1
minc_2:
inc 25h
mov r1,#25h
cjne @r1,#10,madj_2
mov 25h,#0
inc 26h
mov r1,#26h
cjne @r1,#6,madj_2
mov 26h,#0
ajmp madj_2
hinc_1:
inc 23h
mov r1,#23h
cjne @r1,#10,ss14
mov 23h,#0
inc 24h
ss14:
mov a,24h
swap a
xchd a,@r1
cjne a,#ts,ss15
mov 23h,#0
mov 24h,#0
ajmp hadj_1
ss15:xchd a,@r1
ajmp hadj_1
hinc_2:
inc 27h
mov r1,#27h
cjne @r1,#10,sss14
mov 27h,#0
inc 28h
sss14:
mov a,28h
swap a
xchd a, @r1
cjne a,#ts,sss15
mov 27h,#0
mov 28h,#0
ajmp hadj_2
sss15:
xchd a,@r1
ajmp hadj_2

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;時間調整程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

time_adj:;
clr psw.5
push acc
mov a,70h
jb acc.0,l1;P1.0調時功能鍵,每按一次切換一位
ajmp nokeyout
adj_out:
mov 21h,73h
mov 22h,74h
setb p3.0 ;閉合繼電器
setb tr1
nokeyout:
pop acc
ret
QQ: anl 73h,#0fh
anl 74h,#0fh
;anl 78h,#0fh
ret
l1: clr tr1;acall dab; 分鍾調整
orl 73h,#10h;點亮分右下角的小數點,當前調整位置
acall disp
acall QQ
acall key_scanf
clr psw.5
mov a,70h
jb acc.0,h_adj;切換到小時調整
jb acc.1,m_inc;P1.2加1按鈕
ajmp l1
h_adj:; 小時調整
;acall dab
orl 74h,#10h
acall disp
acall QQ
acall key_scanf
clr psw.5
mov a,70h
jb acc.0,out_adj;切換到星期調整
jb acc.1,h_inc;小時加1
ajmp h_adj
w_adj:
acall daa
orl 78h,#10h
acall disp
acall QQ
acall key_scanf
clr psw.5
mov a,70h
jb acc.0,out_adj
jb acc.2,w_inc
ajmp w_adj
out_adj:
ajmp adj_out
m_inc:;;;;;;;;;;;;;;; 調整分時,對定時復位,初始化
clr tr1
mov 71h,#0
mov 72h,#0
mov 79h,#0
mov tl1,trr
mov th1,#3ch
mov r3,#20
inc 73h
mov r1,#73h
cjne @r1,#10,s12
mov 73h,#0
inc 74h
mov r1,#74h
cjne @r1,#10,s12
mov 74h,#0
s12: ajmp l1
;;;;;;;;;;;;;;;;;;;;;;調整小時位
h_inc:
inc 74h
mov r1,#74h
cjne @r1,#10,s14
mov 74h,#0
;inc 76h
s14: ajmp h_adj
;mov a,76h
;swap a
;xchd a,@r1
;cjne a,#ts,s15;;;12進制,24進制設置值決定
;mov 75h,#0
;mov 76h,#0
;ajmp h_adj
;s15: ;xchd a,@r1
;ajmp h_adj
;;;;;;;;;;;;;;;;;;;;;;;調整星期位
w_inc:
inc 78h
mov r1,#78h
cjne @r1,#8,s16
mov 78h,#1h
s16: ajmp w_adj

;;;;;;;;;;;;;;;;;;;;;;;當前鬧鍾開/關情況報告位
numb:clr 29h.4
jnb 29h.0,iii1
jnb 20h.6,iii1
setb 29h.4
iii1:jnb 29h.1,out_21
jnb 20h.7,out_21
setb 29h.4
out_21:
jnb 20h.6,out_12
jnb 20h.7,out_13
mov 77h,#1dh
ajmp out_22
out_12:
jnb 20h.7,out_14
mov 77h,#1bh
ajmp out_22
out_13:
mov 77h,#1ch
ajmp out_22
out_14:
mov 77h,#1ah
out_22:
ret
end

閱讀全文

與用單片機做時鍾相關的資料

熱點內容
黑鯊相冊是哪個文件夾 瀏覽:637
網頁聯機游戲源碼 瀏覽:570
程序員談判技巧 瀏覽:445
大叔做了程序員做夢都想做的事 瀏覽:830
c語言中經典演算法 瀏覽:639
程序員小白表白 瀏覽:357
matlab編程二階微分 瀏覽:660
批量建文件夾並命名視頻 瀏覽:614
如何訪問美國伺服器快 瀏覽:522
推薦單片機框架書籍 瀏覽:84
4g69壓縮比 瀏覽:165
像素風圖片壓縮 瀏覽:869
php接收參數函數 瀏覽:719
windows終端命令提示 瀏覽:60
pythonweb增刪改查 瀏覽:739
汽車壓縮壓力差怎麼辦 瀏覽:735
程序員發自己照片 瀏覽:1000
php上傳圖片ftp 瀏覽:445
java程序員出國 瀏覽:147
角色朝向演算法游戲 瀏覽:418