📄 adcpin.lst
字号:
ADCPIN PAGE 1
1 ;********************************************************************
2 ;
3 ; Author : ADI - Apps www.analog.com/MicroConverter
4 ;
5 ; Date : March 2001
6 ;
7 ; File : ADCpin.asm
8 ;
9 ; Hardware : ADuC814
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 $MOD814 ; Use 8052&ADuC814 predefined symbols
19
00B3 20 LED EQU P3.3 ; P3.3 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 12009F 34 CALL SENDVAL
0038 E5D9 35 MOV A,ADCDATAL
003A 12009F 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 75CBFF 46 MOV RCAP2H,#0FFh ; config UART for 9600 baud
004E 75CAF9 47 MOV RCAP2L,#-7 ;
0051 75CDFF 48 MOV TH2,#0FFh
0054 75CCF9 49 MOV TL2,#-7
0057 759852 50 MOV SCON,#52h
005A 75C834 51 MOV T2CON,#34h
52 ; PRECONFIGURE...
53
005D 75EF80 54 MOV ADCCON1,#080h ; power up ADC
0060 75D800 55 MOV ADCCON2,#CHAN ; select channel to convert
56
57 ; LAUNCH CONTINUOUS CONVERSIONS...
58
ADCPIN PAGE 2
0063 D2AF 59 SETB EA ; enable interrupts
0065 D2AE 60 SETB EADC ; enable ADC interrupt
0067 43EF01 61 ORL ADCCON1,#001h ; enable hardware CONVST pin
62
63 ; CONTINUE WITH OTHER CODE...
64
006A B2B3 65 AGAIN: CPL LED ; blink (complement) the LED
006C 7401 66 MOV A,#01H ; delay length
006E 120073 67 CALL DELAY ; delay 100ms
0071 80F7 68 JMP AGAIN ; repeat
69
70 ; the micro is free to continue with other tasks (flashing the LED in
71 ; this case) while the ADC is converting, synchronously to the
72 ; external CONVST pin. results are being handled by the ADC
73 ; interrupt service routine.
74
75 ;____________________________________________________________________
76 ; SUBROUTINE
0073 77 DELAY: ; Delays by 100ms * A
78 ; 100mSec based on 2.097152MHZ
79 ; Core Clock
80 ; i.e. default ADuC814 Clock
81
0073 F9 82 MOV R1,A ; Acc holds delay variable
0074 7A22 83 DLY0: MOV R2,#022h ; Set up delay loop0
0076 7BFF 84 DLY1: MOV R3,#0FFh ; Set up delay loop1
0078 DBFE 85 DJNZ R3,$ ; Dec R3 & Jump here until R3 is 0
007A DAFA 86 DJNZ R2,DLY1 ; Dec R2 & Jump DLY1 until R2 is 0
007C D9F6 87 DJNZ R1,DLY0 ; Dec R1 & Jump DLY0 until R1 is 0
007E 22 88 RET ; Return from subroutine
89
90 ;____________________________________________________________________
91
=1 92 $INCLUDE(UARTIO.ASM)
=1 93 ;********************************************************************
=1 94 ;
=1 95 ; Author : ADI - Apps www.analog.com/MicroConverter
=1 96 ;
=1 97 ; Date : 12 October 1999
=1 98 ;
=1 99 ; File : UARTIO.hex
=1 100 ;
=1 101 ; Hardware : any 8051 based microcontroller or MicroConverter
=1 102 ;
=1 103 ; Description : standard UART I/O subroutines. total size of this
=1 104 ; code when assembled is 155 bytes. routines for use
=1 105 ; external to this file are:
=1 106 ;
=1 107 ; SENDSTRING - sends a string of characters
=1 108 ; SENDCHAR - sends a single character
=1 109 ; SENDVAL - sends a byte as 2 ASCII characters
=1 110 ; HEX2ASCII - converts from HEX to ASCII
=1 111 ; ASCII2HEX - converts from ASCII to HEX
=1 112 ; GETCHAR - gets a single character
=1 113 ; GETVAL - gets a byte as 2 ASCII characters
=1 114 ;
=1 115 ;********************************************************************
=1 116
ADCPIN PAGE 3
=1 117 ;____________________________________________________________________
=1 118 ; SENDSTRING
=1 119
007F =1 120 SENDSTRING: ; sends ASCII string to UART starting at location
=1 121 ; DPTR and ending with a null (0) value
=1 122
007F C0E0 =1 123 PUSH ACC
0081 C0F0 =1 124 PUSH B
0083 E4 =1 125 CLR A
0084 F5F0 =1 126 MOV B,A
0086 E5F0 =1 127 IO0010: MOV A,B
0088 05F0 =1 128 INC B
008A 93 =1 129 MOVC A,@A+DPTR
008B 6005 =1 130 JZ IO0020
008D 120097 =1 131 CALL SENDCHAR
0090 80F4 =1 132 JMP IO0010
0092 D0F0 =1 133 IO0020: POP B
0094 D0E0 =1 134 POP ACC
=1 135
0096 22 =1 136 RET
=1 137
=1 138 ;____________________________________________________________________
=1 139 ; SENDCHAR
=1 140
0097 =1 141 SENDCHAR: ; sends ASCII value contained in A to UART
=1 142
0097 3099FD =1 143 JNB TI,$ ; wait til present char gone
009A C299 =1 144 CLR TI ; must clear TI
009C F599 =1 145 MOV SBUF,A
=1 146
009E 22 =1 147 RET
=1 148
=1 149 ;____________________________________________________________________
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -