新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)秒表課程設(shè)計(jì)

單片機(jī)秒表課程設(shè)計(jì)

作者: 時(shí)間:2013-03-12 來源:網(wǎng)絡(luò) 收藏

;數(shù)碼管顯示秒表時(shí)間的程序
GN1: ;先初始化
S1:MOV A,#0
MOV TEMP,A
GOON1: MOV R2,#2
JS1: MOV R3,#250
TIME1: MOV A,TEMP ;將TEMP中的十六進(jìn)制數(shù)轉(zhuǎn)換成10進(jìn)制
MOV B,#10 ;10進(jìn)制/10=10進(jìn)制
DIV AB
MOV B_BIT,A ;十位在A
MOV A_BIT,B ;個(gè)位在B

LCALL DPLOP1

;插入一段判斷定時(shí)過程中是否有的程序段
C1: JB P3.6,B1
ACALL DELAY10;延時(shí)10毫秒消抖
JB P3.6,C1
JNB P3.6,$;等待按鍵松開
CPL F0
ZT1: ; MOV P3,#0FFH;對(duì)P3口初始化,設(shè)置為高電平,用于
JB P3.6,$;循環(huán)判斷開始按鈕K1是否按下?
ACALL DELAY10;延時(shí)10毫秒觸點(diǎn)消抖
JB P3.6,ZT1;如果是干擾就返回
JNB P3.6,$;等待按鍵松開
LCALL DPLOP1

B1: JB P3.7,LOOP1
ACALL DELAY10;延時(shí)10毫秒消抖
JB P3.7,B1
JNB P3.7,$;等待按鍵松開
AJMP OVER

LOOP1: DJNZ R3,TIME1 ;2毫秒循環(huán)執(zhí)行250次,時(shí)間約0.5秒
DJNZ R2,JS1 ;循環(huán)執(zhí)行2次,時(shí)間為1 秒鐘

INC TEMP;滿一秒鐘對(duì)時(shí)間加1
MOV A,TEMP
CLR C
SUBB A,#60
JNZ GOON1;判斷TEMP的數(shù)值是否為60?不為60循環(huán)
ACALL OVER
RET


GN2: MOV A,#14H ; 設(shè)定倒計(jì)時(shí)的時(shí)間20S
MOV TEMP,A

;數(shù)碼管顯示倒計(jì)時(shí)時(shí)間的程序
;初始化
MOV P3,#0FFH;對(duì)P3口初始化,設(shè)置為高電平,用于
MOV P0,#14H;使顯示時(shí)間為設(shè)定的倒計(jì)時(shí)時(shí)間

GOON2: MOV R2,#2
JS2: MOV R3,#250
TIME2: MOV A,TEMP ;將TEMP中的十六進(jìn)制數(shù)轉(zhuǎn)換成10進(jìn)制
MOV B,#10 ;10進(jìn)制/10=10進(jìn)制
DIV AB
MOV B_BIT,A ;十位在A
MOV A_BIT,B ;個(gè)位在B

MOV DPTR,#NUMTAB ;指定查表啟始地址
DPLOP2: MOV A,A_BIT ;取個(gè)位數(shù)
MOVC A,@A+DPTR ;查個(gè)位數(shù)的7段代碼
MOV P0,A ;送出個(gè)位的7段代碼

CLR P2.5 ;開個(gè)位顯示
ACALL DELY1;顯示1毫秒
SETB P2.5;關(guān)閉個(gè)位顯示,防止鬼影
MOV A,B_BIT ;取十位數(shù)
MOVC A,@A+DPTR ;查十位數(shù)的7段代碼
MOV P0,A ;送出十位的7段代碼
CLR P2.6 ;開十位顯示
ACALL DELY1;顯示1毫秒
SETB P2.6;關(guān)閉十位顯示,防止鬼影

;插入一段判斷定時(shí)過程中是否有按鍵輸入的程序段
C2: JB P3.6,B2
ACALL DELAY10;延時(shí)10毫秒消抖
JB P3.6,C2
JNB P3.6,$;等待按鍵松開

ZT2: MOV P3,#0FFH;對(duì)P3口初始化,設(shè)置為高電平,用于按鍵輸入
JB P3.6,$;循環(huán)判斷開始按鈕K1是否按下?
ACALL DELAY10;延時(shí)10毫秒觸點(diǎn)消抖
JB P3.6,ZT2;如果是干擾就返回
JNB P3.6,$;等待按鍵松開



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉