📄 adcsingl.lst
字号:
ADCSINGL PAGE 1
1 ;********************************************************************
2 ;
3 ; Author : ADI - Apps www.analog.com/MicroConverter
4 ;
5 ; Date : October 2003
6 ;
7 ; File : ADCsingl.asm
8 ;
9 ; Hardware : ADuC842/ADuC843
10 ;
11 ; Description : Performs repeated single ADC conversions and moves
12 ; results to UART. Sets the red LED on the eval
13 ; board upon completion of each conversion. A new
14 ; conversion is innitiated every 200ms.
15 ; All rate calculations assume an 2.097152MHz Mclk.
16 ;
17 ;********************************************************************
18
19 $MOD842 ; Use 8052&ADuC832 predefined symbols
20
00B4 21 LED EQU P3.4 ; P3.4 drives red LED on eval board
0000 22 CHAN EQU 0 ; convert this ADC input channel..
23 ; ..chan values can be 0 thru 6
24 ;____________________________________________________________________
25 ; BEGINNING OF CODE
---- 26 CSEG
27
0000 28 ORG 0000h
29
0000 02004B 30 JMP MAIN ; jump to main program
31 ;____________________________________________________________________
32
33
34 ;====================================================================
35 ; MAIN PROGRAM
004B 36 ORG 004Bh
37
004B 38 MAIN:
39
40 ; Set up UART
004B 759E83 41 MOV T3CON,#083H
004E 759D2D 42 MOV T3FD,#02DH
0051 759852 43 MOV SCON,#52h
44
45 ; PRECONFIGURE...
46
0054 75EFAC 47 MOV ADCCON1,#0ACh ; power up ADC
0057 75D800 48 MOV ADCCON2,#CHAN ; select channel to convert
49
50 ; PERFORM REPEATED SINGLE CONVERSIONS...
51
005A B2B4 52 AGAIN: CPL LED ; turn the LED off
005C 7414 53 MOV A,#020 ; Delay length
005E 120072 54 CALL DELAY ; delay 200ms
55
0061 D2DC 56 SETB SCONV ; innitiate single ADC conversion
57 ; ADC ISR is called upon completion
0063 30DFFD 58 JNB ADCI,$
ADCSINGL PAGE 2
59
0066 E5DA 60 MOV A,ADCDATAH
0068 12009E 61 CALL SENDVAL
006B E5D9 62 MOV A,ADCDATAL
006D 12009E 63 CALL SENDVAL
64
0070 80E8 65 JMP AGAIN ; repeat
66
67 ;____________________________________________________________________
68 ; SUBROUTINE
0072 69 DELAY: ; Delays by 10ms * A
70 ; 25mSec based on 2.09MHZ
71 ; Core Clock
72 ; i.e. default ADuC842 Clock
73
0072 F9 74 MOV R1,A ; Acc holds delay variable (1 clock)
0073 7A1B 75 DLY0: MOV R2,#01Bh ; Set up delay loop0 (2 clocks)
0075 7BFF 76 DLY1: MOV R3,#0FFh ; Set up delay loop1 (2 clocks)
0077 DBFE 77 DJNZ R3,$ ; Dec R3 & Jump here until R3 is 0 (3 clocks)
0079 DAFA 78 DJNZ R2,DLY1 ; Dec R2 & Jump DLY1 until R2 is 0 (3 clocks)
007B D9F6 79 DJNZ R1,DLY0 ; Dec R1 & Jump DLY0 until R1 is 0 (3 clocks)
007D 22 80 RET ; Return from subroutine
81
82
83 ;____________________________________________________________________
84
85
=1 86 $INCLUDE(UARTIO.ASM)
=1 87 ;********************************************************************
=1 88 ;
=1 89 ; Author : ADI - Apps www.analog.com/MicroConverter
=1 90 ;
=1 91 ; Date : 12 October 1999
=1 92 ;
=1 93 ; File : UARTIO.hex
=1 94 ;
=1 95 ; Hardware : any 8051 based microcontroller or MicroConverter
=1 96 ;
=1 97 ; Description : standard UART I/O subroutines. total size of this
=1 98 ; code when assembled is 155 bytes. routines for use
=1 99 ; external to this file are:
=1 100 ;
=1 101 ; SENDSTRING - sends a string of characters
=1 102 ; SENDCHAR - sends a single character
=1 103 ; SENDVAL - sends a byte as 2 ASCII characters
=1 104 ; HEX2ASCII - converts from HEX to ASCII
=1 105 ; ASCII2HEX - converts from ASCII to HEX
=1 106 ; GETCHAR - gets a single character
=1 107 ; GETVAL - gets a byte as 2 ASCII characters
=1 108 ;
=1 109 ;********************************************************************
=1 110
=1 111 ;____________________________________________________________________
=1 112 ; SENDSTRING
=1 113
007E =1 114 SENDSTRING: ; sends ASCII string to UART starting at location
=1 115 ; DPTR and ending with a null (0) value
=1 116
ADCSINGL PAGE 3
007E C0E0 =1 117 PUSH ACC
0080 C0F0 =1 118 PUSH B
0082 E4 =1 119 CLR A
0083 F5F0 =1 120 MOV B,A
0085 E5F0 =1 121 IO0010: MOV A,B
0087 05F0 =1 122 INC B
0089 93 =1 123 MOVC A,@A+DPTR
008A 6005 =1 124 JZ IO0020
008C 120096 =1 125 CALL SENDCHAR
008F 80F4 =1 126 JMP IO0010
0091 D0F0 =1 127 IO0020: POP B
0093 D0E0 =1 128 POP ACC
=1 129
0095 22 =1 130 RET
=1 131
=1 132 ;____________________________________________________________________
=1 133 ; SENDCHAR
=1 134
0096 =1 135 SENDCHAR: ; sends ASCII value contained in A to UART
=1 136
0096 3099FD =1 137 JNB TI,$ ; wait til present char gone
0099 C299 =1 138 CLR TI ; must clear TI
009B F599 =1 139 MOV SBUF,A
=1 140
009D 22 =1 141 RET
=1 142
=1 143 ;____________________________________________________________________
=1 144 ; SENDVAL
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -