?? pinlv1.asm
字號:
DJNZ R7,HERE
CLR TR0
CLR TR1
RET
PINYU2: ;測頻率1k_0.5mhz
MOV A,76H
CJNE A,#00H,NEXT2
MOV 65H,#00H
MOV 66H,#00H
MOV 67H,#00H
AJMP NEXT3
NEXT2:
MOV R6,76H
MOV R0,#65H
MOV R7,#03H
MOV R1,#50H
MOV 65H,#00H
MOV 66H,#00H
MOV 67H,#00H
NEXT4: MOV 50H,#06H
MOV 51H,#55H
MOV 52H,#36H
LCALL BCDA
DJNZ R6,NEXT4
NEXT3: MOV R6,TH1
MOV R7,TL1
LCALL HB2
MOV R7,#03H
MOV 50H,R3
MOV 51H,R4
MOV 52H,R5
MOV R0,#65H
MOV R1,#50H
LCALL BCDA
MOV 60H,#00H ;結(jié)果在65,66,67h中BCD碼
MOV 61H,65H
MOV 62H,66H
MOV 63H,67H
RET
PINYU:
MOV 30H,TH0
MOV 31H,TL0
MOV A,76H
;CJNE A,#00H,NEXT5
;AJMP NEXT6
;CLR TF0
LCALL MUL4
LCALL ADD1
MOV 65H,R2
MOV 66H,R3
MOV 67H,R4
MOV 68H,R5
MOV R0,#66H
MOV R7,35H ;乘以分頻系數(shù)
LCALL MULD3_1
MOV 36H,R3
MOV 37H,R4
MOV 38H,R5
LCALL HB4 ;轉(zhuǎn)換后的三字節(jié)BCD碼整數(shù)在R2,R3、R4、R5中。
MOV 60H,R2
MOV 61H,R3
MOV 62H,R4
MOV 63H,R5
RET
MAIKUAN: ;測量,測脈寬
MOV TMOD,#01H
MOV TL0,#00H
MOV TH0,#00H
SETB EA
SETB ET0
MOV 76H,#00H
SETB P3.5
GDP5: MOV C,P3.5
JC GDP5
DDP5: MOV C,P3.5
JNC DDP5
SETB TR0
GDP6: MOV C,P3.5
JC GDP6
CLR TR0
; MOV A,B
; CJNE A,#00H,NEXT6
;AJMP NEXT7
MOV A,TH0
MOV TH1,A
MOV A,TL0
MOV TL1,A
CLR ET0
LCALL MUL4
LCALL ADD1
MOV 36H,R3
MOV 37H,R4
MOV 38H,R5
RET
MUL4: MOV R2,#0FFH
MOV R3,#0FFH
MOV R6,#00H
MOV R7,76H
LCALL MULD
MOV A,76H
ADD A,R5
MOV R5,A
MOV A,#00H
ADDC A,R4
MOV R4,A
MOV A,#00H
ADDC A,R3
MOV R3,A
MOV A,#00H
ADDC A,R2 ;結(jié)果在R2.R3.R4.R5中
RET
ADD1: MOV A,TL1
ADD A,R5
MOV R5,A
MOV A,TH1
ADDC A,R4
MOV R4,A
MOV A,#00H
ADDC A,R3
MOV R3,A
MOV A,#00H
ADDC A,R2
MOV R2,A ;結(jié)果在R2.R3.R4.R5中
RET
BIJIAO:MOV A,R2 ;比較30h,31h,32h,33h與r2,r3,r4,r5中數(shù)據(jù)的大小,大,20H=0,
CJNE A,30H,TEND
MOV A,R3
CJNE A,31H,TEND
MOV A,R4
CJNE A,32H,TEND
MOV A,R5
CJNE A,33H,TEND
TEND:JC BJ1
SETB 20H
AJMP TEND2
BJ1:CLR 20H
TEND2:RET
; (5) 標(biāo)號: MULD 功能:雙字節(jié)二進(jìn)制無符號數(shù)乘法
;入口條件:被乘數(shù)在R2、R3中,乘數(shù)在R6、R7中。
;出口信息:乘積在R2、R3、R4、R5中。
;影響資源:PSW、A、B、R2~R7 堆棧需求: 2字節(jié)
MULD:MOV A,R3 ;;計算R3乘R7
MOV B,R7
MUL AB
MOV R4,B ;;暫存部分積
MOV R5,A
MOV A,R3 ;;計算R3乘R6
MOV B,R6
MUL AB
ADD A,R4 ;;累加部分積
MOV R4,A
CLR A
ADDC A,B
MOV R3,A
MOV A,R2 ;;計算R2乘R7
MOV B,R7
MUL AB
ADD A,R4 ;;累加部分積
MOV R4,A
MOV A,R3
ADDC A,B
MOV R3,A
CLR A
RLC A
XCH A,R2 ;;計算R2乘R6
MOV B,R6
MUL AB
ADD A,R3 ;;累加部分積
MOV R3,A
MOV A,R2
ADDC A,B
MOV R2,A
RET
; (9) 標(biāo)號: DV31 功能:三字節(jié)二進(jìn)制無符號數(shù)除以單字節(jié)二進(jìn)制數(shù)
;入口條件:被除數(shù)在R3、R4、R5中,除數(shù)在R7中。
;出口信息:OV=0 時,雙字節(jié)商在R4、R5中,OV=1 時溢出。
;影響資源:PSW、A、B、R2~R7 堆棧需求: 2字節(jié)
DV31: CLR C
MOV A,R3
SUBB A,R7
JC DV30
SETB OV ;;商溢出
RET
DV30: MOV R2,#10H ;;;求R3R4R5/R7-→R4R5
DM23: CLR C
MOV A,R5
RLC A
MOV R5,A
MOV A,R4
RLC A
MOV R4,A
MOV A,R3
RLC A
MOV R3,A
MOV F0,C
CLR C
SUBB A,R7
ANL C,/F0
JC DM24
MOV R3,A
INC R5
DM24: DJNZ R2,DM23
MOV A,R3 ;;;四舍五入
ADD A,R3
JC DM25
SUBB A,R7
JC DM26
DM25: INC R5
MOV A,R5
JNZ DM26
INC R4
DM26: CLR OV
RET ;;商在R4R5中
;(7) 標(biāo)號: DIVD 功能:雙字節(jié)二進(jìn)制無符號數(shù)除法
;入口條件:被除數(shù)在R2、R3、R4、R5中,除數(shù)在R6、R7中。
;出口信息:OV=0 時,雙字節(jié)商在R2、R3中,OV=1 時溢出。
;影響資源:PSW、A、B、R1~R7 堆棧需求: 2字節(jié)
DIVD: CLR C ;;比較被除數(shù)和除數(shù)
MOV A,R3
SUBB A,R7
MOV A,R2
SUBB A,R6
JC DVD1
SETB OV ;;溢出
RET
DVD1: MOV B,#10H ;;計算雙字節(jié)商
DVD2: CLR C ;;部分商和余數(shù)同時左移一位
MOV A,R5
RLC A
MOV R5,A
MOV A,R4
RLC A
MOV R4,A
MOV A,R3
RLC A
MOV R3,A
XCH A,R2
RLC A
XCH A,R2
MOV F0,C ;;保存溢出位
CLR C
SUBB A,R7 ;;;計算(R2R3-R6R7)
MOV R1,A
MOV A,R2
SUBB A,R6
ANL C,/F0 ;;結(jié)果判斷
JC DVD3
MOV R2,A ;;夠減,存放新的余數(shù)
MOV A,R1
MOV R3,A
INC R5 ;;商的低位置一
DVD3: DJNZ B,DVD2 ;;計算完十六位商(R4R5)
MOV A,R4 ;;將商移到R2R3中
MOV R2,A
MOV A,R5
MOV R3,A
CLR OV ;;設(shè)立成功標(biāo)志
RET
;;;入口條件:待轉(zhuǎn)換的雙字節(jié)十六進(jìn)制整數(shù)在R6、R7中。
;;出口信息:轉(zhuǎn)換后的三字節(jié)BCD碼整數(shù)在R3、R4、R5中。
;;影響資源:PSW、A、R2~R7 堆棧需求: 2字節(jié)
HB2:CLR A ;;;BCD碼初始化
MOV R3,A
MOV R4,A
MOV R5,A
MOV R2,#10H ;;;轉(zhuǎn)換雙字節(jié)十六進(jìn)制整數(shù)
HB3:MOV A,R7 ;;;從高端移出待轉(zhuǎn)換數(shù)的一位到CY中
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5 ;;;BCD碼帶進(jìn)位自身相加,相當(dāng)于乘2
ADDC A,R5
DA A ;;;十進(jìn)制調(diào)整
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
MOV A,R3
ADDC A,R3
MOV R3,A ;;;雙字節(jié)十六進(jìn)制數(shù)的萬位數(shù)不超過6,不用調(diào)整
DJNZ R2,HB3 ;; ;處理完16bit
RET
;;(1) 標(biāo)號: BCDA 功能:多字節(jié)BCD碼加法
;;入口條件:字節(jié)數(shù)在R7中,被加數(shù)在[R0]中,加數(shù)在[R1]中。
;;出口信息:和在[R0]中,最高位進(jìn)位在CY中。
;;;影響資源:PSW、A、R2 堆棧需求: 2字節(jié)
BCDA: MOV A,R7 ;;;取字節(jié)數(shù)至R2中
MOV R2,A
ADD A,R0 ;;;初始化數(shù)據(jù)指針
MOV R0,A
MOV A,R2
ADD A,R1
MOV R1,A
CLR C
BCD1: DEC R0 ;;;調(diào)整數(shù)據(jù)指針
DEC R1
MOV A,@R0
ADDC A,@R1 ;;;按字節(jié)相加
DA A ;;;十進(jìn)制調(diào)整
MOV @R0,A ;;;和存回[R0]中
DJNZ R2,BCD1 ;;;處理完所有字節(jié)
RET
;(5) 標(biāo)號: MULD 功能:3字節(jié)二進(jìn)制無符號數(shù)乘法
;入口條件:被乘數(shù)在R7中,乘數(shù)在[R0]中。
;出口信息:乘積在R2、R3、R4、R5中。
;影響資源:PSW、A、B、R2~R7 堆棧需求: 2字節(jié)
MULD3_1:INC R0
INC R0
MOV A,R7 ;;計算乘
MOV B,@R0
MUL AB
MOV R4,B ;;暫存部分積
MOV R5,A
MOV A,R7 ;;計算乘
DEC R0
MOV B,@R0
MUL AB
ADD A,R4 ;;累加部分積
MOV R4,A
CLR A
ADDC A,B
MOV R3,A
MOV A,R7 ;;計算乘
DEC R0
MOV B,@R0
MUL AB
ADD A,R3 ;;累加部分積
MOV R3,A
CLR A
ADDC A,B
MOV R2,A
RET
; (17) 標(biāo)號: HB4 功能:3字節(jié)十六進(jìn)制整數(shù)轉(zhuǎn)換成雙字節(jié)BCD碼整數(shù)
;入口條件:待轉(zhuǎn)換的雙字節(jié)十六進(jìn)制整數(shù)在36,37,38H 中。
;出口信息:轉(zhuǎn)換后的三字節(jié)BCD碼整數(shù)在R2,R3、R4、R5中。
;影響資源:PSW、A、R2~R7 堆棧需求: 2字節(jié)
HB4:CLR A ;;;BCD碼初始化
MOV R3,A
MOV R4,A
MOV R5,A
MOV R2,A
MOV R7,#18H ;;轉(zhuǎn)換3字節(jié)十六進(jìn)制整數(shù)
HB5: MOV A,38H ; ;從高端移出待轉(zhuǎn)換數(shù)的一位到CY中
RLC A
MOV 38H,A
MOV A,37H
RLC A
MOV 37H,A
MOV A,36H ; ;從高端移出待轉(zhuǎn)換數(shù)的一位到CY中
RLC A
MOV 36H,A
MOV A,R5 ;;BCD碼帶進(jìn)位自身相加,相當(dāng)于乘2
ADDC A,R5
DA A ;;十進(jìn)制調(diào)整
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
MOV A,R3
ADDC A,R3
DA A
MOV R3,A
MOV A,R2
ADDC A,R2
DA A
MOV R2,A ;;雙字節(jié)十六進(jìn)制數(shù)的萬位數(shù)不超過6,不用調(diào)整
DJNZ R7,HB5 ;;處理完16bit
RET
TRANS: MOV R0,#63H
MOV R1,#40H
MOV R6,#04H
LAST:MOV A,@R0
ANL A,#0FH
MOV @R1,A
MOV A,@R0
ANL A,#0F0H
SWAP A
INC R1
MOV @R1,A
INC R1
DEC R0
DJNZ R6,LAST
RET
SEACH1:MOV DPTR,#A8279_1
MOVX A,@DPTR
ANL A,#07H
JZ RETUN8
LJMP KEY_1
RETUN8:RET
LED:MOV DPTR,#A8279_1
MOV A,#90H
MOVX @DPTR,A
MOV R1,#40H
MOV R7,#08H
MOV DPTR,#A8279_2
LOOP:MOV A,@R1
ADD A,#05H
MOVC A,@A+PC
MOVX @DPTR,A
INC R1
DJNZ R7,LOOP
RET
DB 3FH,06H,5BH,4FH,66H,6DH
DB 7DH,07H,7FH,6FH
END
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -