當前位置:編程學習大全網 - 編程語言 - 求壹七段碼顯示器設計設計

求壹七段碼顯示器設計設計

這是秒表實驗,將就用吧

MINUTE EQU 41H ;存放分信息的單元

SECOND EQU 42H ;存放秒信息的單元

NUM EQU 43H ;存放T0溢出次數的單元

ORG 0000H ;程序入口

AJMP MAIN

ORG 0030H ;主程序入口

MAIN:MOV SP,#60H ;指定堆棧棧底

MOV HOUR,#00H

MOV MINUTE,#00H

MOV SECOND,#00H ;將時、分、秒分別清零

MOV NUM,#0

MOV TMOD,#01H ;設T0工作於方式1,用於定時

MOV TH0,#4CH ;設置T0的初始值

MOV TL0,#00H

MOV IE,#00H ;關中斷

SETB TR0 ;開啟定時器T0

LOOP:NOP

NOP

ACALL DISPLAY ;調用顯示子程序

NOP

NOP

LOOP1:JB TF0,TIME ;等待定時溢出

LJMP LOOP1

TIME:CLR TR0 ;關閉定逼?

PUSH DPL ;保護現場

PUSH DPH

PUSH ACC

MOV TH0,#4CH ;重新設置T0的值

MOV TL0,#00H

SETB TR0 ;開啟T0

MOV A,NUM

INC A ;溢出次數+1

MOV NUM,A

CJNE A,#0AH,TT1 ;檢測鍵盤

MOV P1,#0FH ;設鍵盤初值

MOV R0,#04H ;延時消抖

LCALL DELAY

JNB P1.0,T0C1 ;為0表示P1.0按下,轉T0C1調整秒

JNB P1.1,T0C2 ;為0表示P1.1按下,轉T0C2調整分

JNB P1.2,T0C3 ;為0表示P1.2按下,轉T0C3調整時

TT1: CJNE A,#140,RR4

MOV NUM,#00H

T0C1:MOV A,SECOND

INC A ;秒單元內容加1

DA A ;調整為BCD碼

MOV SECOND,A

CJNE A,#60H,RR4 ;不為60秒繼續等待

setb flag:

clr flag

RR1: MOV SECOND,#00H ;為60秒將秒單元清零

T0C2:MOV A,MINUTE

INC A ;分單元內容加1

DA A ;調整為BCD碼

MOV MINUTE,A

CJNE A,#60H,RR4 ;不為60分繼續等待

RR2: MOV MINUTE,#00H ;為60分,分單元清零

T0C3:MOV P1,#0F0H ; 1小時閃壹次

LCALL DELAY ;延時

MOV P1,#0FH

MOV A,HOUR

INC A ;時單元內容加1

DA A ;調整為BCD碼

MOV HOUR,A

CJNE A,#24H,RR4 ;不為24小時繼續等待

RR3: MOV HOUR,#00H ;為24小時,時單元清零

RR4: POP ACC ;恢復現場

POP DPH

POP DPL

LJMP LOOP

DELAY:MOV R1,#10H ;延時子程序

DELAY1:MOV R2,#20H

DJNZ R2,$

DJNZ R1,DELAY1

DJNZ R0,DELAY

RET

DISPLAY:MOV DPTR,#TAB ;送表頭基地址

MOV A,HOUR

ANL A,#0FH ;屏蔽時高位

MOVC A,@A+DPTR ;查時高位

MOV P0,A

CLR P2.6 ;開顯示

MOV R0,#1 ;延時消除鬼影

LCALL DELAY

SETB P2.6 ;關顯示

MOV A,HOUR

ANL A,#0F0H

SWAP A

MOVC A,@A+DPTR

MOV P0,A

CLR P2.7

MOV R0,#1

LCALL DELAY

SETB P2.7

MOV A,MINUTE

ANL A,#0FH

MOVC A,@A+DPTR

MOV P0,A

CLR P2.4

MOV R0,#1

LCALL DELAY

SETB P2.4

MOV A,MINUTE

ANL A,#0F0H

SWAP A

MOVC A,@A+DPTR

MOV P0,A

CLR P2.5

MOV R0,#1

LCALL DELAY

SETB P2.5

MOV A,SECOND

ANL A,#0FH

MOVC A,@A+DPTR

MOV P0,A

CLR P2.2

MOV R0,#1

LCALL DELAY

SETB P2.2

MOV A,SECOND

ANL A,#0F0H

SWAP A

MOVC A,@A+DPTR

MOV P0,A

CLR P2.3

MOV R0,#1

LCALL DELAY

SETB P2.3

RET

TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

END

setb flag: clr flag

  • 上一篇:誰有黃希揚的全部資料
  • 下一篇:硬漢也有細膩的壹面 試駕:雪佛蘭新探界者550T RS
  • copyright 2024編程學習大全網