?? 語音電壓表程序.asm
字號(hào):
;******************************************************************
;
; 語音電壓表程序
; 第二組: 鄒云海 楊學(xué)海 吳中建
;********************************************************************
ORG 0000H
CE EQU P0.4 ;偽指令定義ISD25120管腳
PD EQU P0.5
PR EQU P0.7
EOM EQU P0.6
AJMP MAIN
MAIN: MOV 20H,#00H ;定義按鍵防抖動(dòng)寄存器初值
LCALL CAIJI ;調(diào)用數(shù)據(jù)采集子程序
LCALL TV ;調(diào)用顯示子程序
AJMP MAIN
;*****************************************************************
;
; 以下為子程序
;
;*****************************************************************
;*******************************************************
; 電壓采集程序 CAIJI
; 輸入數(shù)據(jù):P1.3-P1.0
; 位選:P1.7-P1.4
; 出口參數(shù):數(shù)據(jù)存放在10H-13H
;******************************************************
CAIJI: MOV R3,#01FH;循環(huán)采集次數(shù)
CAI: MOV P0,#0FH;屏蔽高位
MOV P1,#0FFH
NOP
MOV A,P1
JB ACC.4,LOOP1;判斷是否千位
JB ACC.5,LOOP2;判斷是否百位
JB ACC.6,LOOP3;判斷是否十位
JB ACC.7,LOOP4;判斷是否個(gè)位
AJMP LOOP5
LOOP1: MOV 13H,A;千位值放入13H中
AJMP LOOP5
LOOP2: MOV 12H,A;百位值放入12H中
AJMP LOOP5
LOOP3: MOV 11H,A;十位值放入11H中
AJMP LOOP5
LOOP4: MOV 10H,A;個(gè)位值放入10H中
LOOP5: LCALL DELAY1
DJNZ R3,CAI
NOP
RET
;************************************************************
; 顯示子程序 TV
; 入口參數(shù):10H-13H
;*************************************************************
TV: MOV P1,#0FH;定義P1口為輸入
MOV P0,10H;
MOV P3,#0F7H;顯示個(gè)位
LCALL DELAY1;延時(shí)
MOV P0,11H
MOV P3,#0BH;顯示十位
LCALL DELAY1
MOV P0,12H
MOV P3,#0FDH;顯示百位
LCALL DELAY1
MOV P0,13H
MOV P3,#0FEH;顯示千位
LCALL DELAY1
NOP
KEY: INC 20H
JNB P3.4,HH;判斷是否有讀音鍵按下
LJMP TV
HH: MOV A,20H
CJNE A,#30H,KEY;去抖動(dòng)
LCALL DELAY
LCALL DUYIN;有鍵按下,調(diào)用讀音程序
RET
;**********************************************************
; 延時(shí)程序
; DELAY1-延時(shí)1MS
; DELAY-延時(shí)0.1s
;***********************************************************
DELAY1: MOV R7,#02H
K1: MOV R6,#0FFH
K2: DJNZ R6,K2
DJNZ R7,K1
RET
DELAY: MOV R7,#0FFH
K5: MOV R6,#0FFH
K6: DJNZ R6,K6
DJNZ R7,K5
RET
;******************************************
;
; 讀音程序 DUYIN
; 入口參數(shù):要讀數(shù)據(jù)放入10H-13H中
;
;******************************************
DUYIN: ANL 10H,#0FH
ANL 11H,#0FH
ANL 12H,#0FH
ANL 13H,#0FH;屏蔽高位
MOV R2,#04H;地址轉(zhuǎn)換4次
MOV R1,20H;轉(zhuǎn)換后地址放入20H-23H中
MOV R0,#10H;數(shù)據(jù)放在10H-13H中
MOV A,@R0 ;數(shù)據(jù)給A
MOV DPTR,#TABLE
MOVC A,@A+DPTR;查表
MOV @R1,A;送數(shù)
INC R0
DJNZ R2,DUYIN
;***************************************************************
MOV R2,#00H
LCALL DUYIN1;讀“現(xiàn)在電壓”
LCALL DELAY
;*************************************************************
MOV R2,23H
LCALL DUYIN1;讀千位
LCALL DELAY
;***************************************************************
MOV R2,22H
LCALL DUYIN1;讀百位
LCALL DELAY
;****************************************************************
MOV R2,#6EH
LCALL DUYIN1;讀小數(shù)點(diǎn)
LCALL DELAY
;****************************************************************
MOV R2,21H
LCALL DUYIN1;讀十位
LCALL DELAY
;****************************************************************
MOV R2,20H
LCALL DUYIN1;讀個(gè)位
LCALL DELAY
;********************************************************************
MOV R2,#78H
LCALL DUYIN1;讀“伏與謝謝使用,請(qǐng)加測試電壓”
LCALL DELAY
RET
;********************************************************************
DUYIN1: CLR PR
NOP
NOP
SETB PR
NOP
NOP
MOV P2,R2
NOP
NOP
CLR PD
NOP
NOP
SETB CE
NOP
NOP
CLR CE
NOP
NOP
NOP
SETB CE
NOP
K9: JNB P0.6,K10
AJMP K9
K10: SETB P0.6
NOP
NOP
SETB PD
NOP
RET
;**************************************************************
TABLE:DB 0AH, 14H, 1EH, 28H, 32H
DB 3CH, 46H, 50H, 5AH, 64H
END
;**********************************************************************
; 編程人員: 吳中建 楊學(xué)海
; 調(diào)試人員: 吳中建 楊學(xué)海 鄒云海
; 調(diào)試通過時(shí)間:2003-7-20
;***********************************************************************
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -