<pre id=\"best-answer-content\" class=\"reply-text mb10\">这是个AD转换控制程序,并将结果在LCD上显示的程序。不过程序比较罗嗦,个人觉得有些程序没用。
说明的部分用“////”标注了,应该比较清楚了。你自己看吧。
LED_0 EQU30H
;
LED_1EQU31H
LED_2EQU32H
;存放段码
ADCEQU35H
;/////////AD转换结果存储单元
CLOCK BITP2.4 ;定义ADC0808时钟位
ST BITP2.5
EOCBITP2.6
OE BITP2.7
ORG00H
SJMP START
ORG0BH
LJMP INT_T0
START: MOVLED_0,#00H
MOVLED_1,#00H
MOVLED_2,#00H
MOVDPTR,#TABLE;段码表首地址
MOVTMOD,#02H
MOVTH0,#245
MOVTL0,#00H
MOVIE,#82H
SETB TR0
////////////启动AD转换//////////////////
WAIT:CLRST
SETBST
CLRST
;启动AD转换
JNBEOC,$ ;等待转换结束
SETBOE
MOVADC,P1 ;读取AD转换结果
CLROE
MOVA,ADC
/////////////////分别取AD结果的个/十/百/位/////////////////////////////
MOVB,#100 ;AD转换结果转换成BCD码
DIVAB
MOVLED_2,A
MOVA,B
MOVB,#10
DIVAB
MOVLED_1,A
MOVLED_0,B
/////////////LCD显示///////////////////////
LCALL DISP
SJMPWAIT
INT_T0: CPLCLOCK
;提供ADC0808时钟信号
RETI
///////送LCD显控制的子程序//////////////
DISP: mov
dptr,#table
MOV A,LED_0 ;数码显示子程序
MOVC A,@A DPTR
CLR P2.3
MOV P0,A
LCALL DELAY
SETB P2.3
mov
dptr,#table
MOV A,LED_1
MOVC A,@A DPTR
CLR P2.2
MOV P0,A
LCALL DELAY
SETB P2.2
mov
dptr,#table
MOV A,LED_2
MOVC A,@A DPTR
setb
acc.7
CLR P2.1
MOV P0,A
LCALL DELAY
SETB P2.1
RET
/////////这段程序,比较怪,因为你没说具体功能,我没看明白//////////
/////////只知道是对AD结果按TAB表进行处理,也是取个/十/百/位/////////
DELAY: MOV R6,#10 ;延时5毫秒
D1: MOV R7,#250
DJNZ R7,$
DJNZ R6,D1
ntov:
mov dptr,#tab
mov a,adc
movc a,@a dptr
mov b,#2
div ab
mov r1,b
mov r1,b
mov b,#10
div ab
mov led_2,a
mov led_1,b
cjne r1,#01,kk1
mov led_0,#05
back: ret
kk1:
mov led_0,#00
ajmp back
RET
TABLE:DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
tab:
db
0,
0 , 0 , 1, 0, 2, 0, 0, 3, 0
db 4, 0, 0, 5, 0, 6, 0, 0, 7, 0
db 8, 0, 0, 9, 0, 0, 10, 0, 11, 0
db 0, 12, 0, 13, 0, 0, 14, 0, 15, 0
db 0, 16, 0, 17, 0, 0, 18, 0, 19, 0
db 0, 20, 0, 0, 21, 0, 22, 0, 0, 23
db 0, 24, 0, 0, 25, 0, 26, 0, 0, 27
db 0, 28, 0, 0, 29, 0, 0, 30, 0, 31
db 0, 0, 32, 0, 33, 0, 0, 34, 0, 35
db 0, 0, 36, 0, 37, 0, 0, 38, 0, 39
db 0, 0, 40, 0, 0, 41, 0, 42, 0, 0
db 43, 0, 44, 0, 0, 45, 0, 46, 0, 0
db 47, 0, 48, 0, 0, 49, 0, 50, 0, 0
db 51, 0, 0, 52, 0, 53, 0, 0, 54, 0
db 55, 0, 0, 56, 0, 57, 0, 0, 58, 0
db 59, 0, 0, 60, 0, 0, 61, 0, 62, 0
db 0, 63, 0, 64, 0, 0, 65, 0, 66, 0
db 0, 67, 0, 68, 0, 0, 69, 0, 70, 0
db 0, 71, 0, 0, 72, 0, 73, 0, 0, 74
db 0, 75, 0, 0, 76, 0, 77, 0, 0, 78
db 0, 79, 0, 0, 80, 0, 0, 81, 0, 82
db 0, 0, 83, 0, 84, 0, 0, 85, 0, 86
db 0, 0, 87, 0, 88, 0, 0, 89, 0, 90
db 0, 0, 91, 0, 0, 92, 0, 93, 0, 0
db 94, 0, 95, 0, 0, 96, 0, 97, 0, 0
db 98, 0, 99, 0, 0, 100, 0, 0, 0
END
|