📄 adcpin.lst
字号:
ADCPIN PAGE 1
1 ;********************************************************************
2 ;
3 ; Author : ADI - Apps www.analog.com/MicroConverter
4 ;
5 ; Date : October 2003
6 ;
7 ; File : ADCpin.asm
8 ;
9 ; Hardware : ADuC842/ADuC843
10 ;
11 ; Description : Performs hardware pin driven ADC conversions and
12 ; outputs results on the UART Continuously flashes
13 ; LED (independently of ADC routine) at approximately
14 ; 5Hz (assuming an 2.097152 MHz Mclk).
15 ;
16 ;********************************************************************
17
18 $MOD842 ; Use 8052&ADuC842 predefined symbols
19
00B4 20 LED EQU P3.4 ; P3.4 drives red LED on eval board
0000 21 CHAN EQU 0 ; convert this ADC input channel..
22 ; ..chan values can be 0 thru 8
23 ;____________________________________________________________________
24 ; BEGINNING OF CODE
---- 25 CSEG
26
0000 27 ORG 0000h
28
0000 02004B 29 JMP MAIN ; jump to main program
30 ;____________________________________________________________________
31 ; INTERRUPT VECTOR SPACE
0033 32 ORG 0033H ; (ADC ISR)
0033 E5DA 33 MOV A,ADCDATAH
0035 120096 34 CALL SENDVAL
0038 E5D9 35 MOV A,ADCDATAL
003A 120096 36 CALL SENDVAL
003D 32 37 RETI
38
39 ;====================================================================
40 ; MAIN PROGRAM
004B 41 ORG 004Bh
42
004B 43 MAIN:
44
45 ; Set up UART
004B 759E83 46 MOV T3CON,#083h
004E 759D2D 47 MOV T3FD,#02DH
0051 759852 48 MOV SCON,#52H
49 ; PRECONFIGURE...
50
0054 75EFAC 51 MOV ADCCON1,#0ACh ; power up ADC
0057 75D800 52 MOV ADCCON2,#CHAN ; select channel to convert
53
54 ; LAUNCH CONTINUOUS CONVERSIONS...
55
005A D2AF 56 SETB EA ; enable interrupts
005C D2AE 57 SETB EADC ; enable ADC interrupt
005E 43EF01 58 ORL ADCCON1,#001h ; enable hardware CONVST pin
ADCPIN PAGE 2
59
60 ; CONTINUE WITH OTHER CODE...
61
0061 B2B4 62 AGAIN: CPL LED ; blink (complement) the LED
0063 740A 63 MOV A,#010 ; delay length
0065 12006A 64 CALL DELAY ; delay 100ms
0068 80F7 65 JMP AGAIN ; repeat
66
67 ; the micro is free to continue with other tasks (flashing the LED in
68 ; this case) while the ADC is converting, synchronously to the
69 ; external CONVST pin. results are being handled by the ADC
70 ; interrupt service routine.
71
72 ;____________________________________________________________________
73 ; SUBROUTINE
006A 74 DELAY: ; Delays by 10ms * A
75 ; 10mSec based on 2.097152MHz
76 ; Core Clock
77 ;
78
006A F9 79 MOV R1,A ; Acc holds delay variable (1 clock)
006B 7A1B 80 DLY0: MOV R2,#01Bh ; Set up delay loop0 (2 clocks)
006D 7BFF 81 DLY1: MOV R3,#0FFh ; Set up delay loop1 (2 clocks)
006F DBFE 82 DJNZ R3,$ ; Dec R3 & Jump here until R3 is 0 (3 clocks)
0071 DAFA 83 DJNZ R2,DLY1 ; Dec R2 & Jump DLY1 until R2 is 0 (3 clocks)
0073 D9F6 84 DJNZ R1,DLY0 ; Dec R1 & Jump DLY0 until R1 is 0 (3 clocks)
0075 22 85 RET ; Return from subroutine
86
87 ;____________________________________________________________________
88
=1 89 $INCLUDE(UARTIO.ASM)
=1 90 ;********************************************************************
=1 91 ;
=1 92 ; Author : ADI - Apps www.analog.com/MicroConverter
=1 93 ;
=1 94 ; Date : 12 October 1999
=1 95 ;
=1 96 ; File : UARTIO.hex
=1 97 ;
=1 98 ; Hardware : any 8051 based microcontroller or MicroConverter
=1 99 ;
=1 100 ; Description : standard UART I/O subroutines. total size of this
=1 101 ; code when assembled is 155 bytes. routines for use
=1 102 ; external to this file are:
=1 103 ;
=1 104 ; SENDSTRING - sends a string of characters
=1 105 ; SENDCHAR - sends a single character
=1 106 ; SENDVAL - sends a byte as 2 ASCII characters
=1 107 ; HEX2ASCII - converts from HEX to ASCII
=1 108 ; ASCII2HEX - converts from ASCII to HEX
=1 109 ; GETCHAR - gets a single character
=1 110 ; GETVAL - gets a byte as 2 ASCII characters
=1 111 ;
=1 112 ;********************************************************************
=1 113
=1 114 ;____________________________________________________________________
=1 115 ; SENDSTRING
=1 116
ADCPIN PAGE 3
0076 =1 117 SENDSTRING: ; sends ASCII string to UART starting at location
=1 118 ; DPTR and ending with a null (0) value
=1 119
0076 C0E0 =1 120 PUSH ACC
0078 C0F0 =1 121 PUSH B
007A E4 =1 122 CLR A
007B F5F0 =1 123 MOV B,A
007D E5F0 =1 124 IO0010: MOV A,B
007F 05F0 =1 125 INC B
0081 93 =1 126 MOVC A,@A+DPTR
0082 6005 =1 127 JZ IO0020
0084 12008E =1 128 CALL SENDCHAR
0087 80F4 =1 129 JMP IO0010
0089 D0F0 =1 130 IO0020: POP B
008B D0E0 =1 131 POP ACC
=1 132
008D 22 =1 133 RET
=1 134
=1 135 ;____________________________________________________________________
=1 136 ; SENDCHAR
=1 137
008E =1 138 SENDCHAR: ; sends ASCII value contained in A to UART
=1 139
008E 3099FD =1 140 JNB TI,$ ; wait til present char gone
0091 C299 =1 141 CLR TI ; must clear TI
0093 F599 =1 142 MOV SBUF,A
=1 143
0095 22 =1 144 RET
=1 145
=1 146 ;____________________________________________________________________
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -