📄 adctimer.lst
字号:
ADCTIMER PAGE 1
1 ;********************************************************************
2 ;
3 ; Author : ADI - Apps www.analog.com/MicroConverter
4 ;
5 ; Date : March 2001
6 ;
7 ; File : ADCtimer.asm
8 ;
9 ; Hardware : ADuC814
10 ;
11 ; Description : Performs ADC conversions at 10KSPS in Timer2 mode.
12 ; Outputs ADC results to RAM. Continuously
13 ; flashes LED (independently of ADC routine) at
14 ; approximately 3Hz.
15 ; All rate calculations assume an 2.097152MHz Mclk.
16 ;
17 ;********************************************************************
18
19 $MOD814 ; Use 8052&ADuC814 predefined symbols
20
00B3 21 LED EQU P3.3 ; P3.3 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 DSEG
0030 26 ORG 0030H
0028 27 LENGTH EQU 40
0030 28 BUFFER: DS LENGTH ; set up buffer in RAM
29
30 ;____________________________________________________________________
31 ; BEGINNING OF CODE
---- 32 CSEG
33
0000 34 ORG 0000h
35
0000 02004B 36 JMP MAIN ; jump to main program
37 ;____________________________________________________________________
38 ; INTERRUPT VECTOR SPACE
0033 39 ORG 0033H ; (ADC ISR)
0033 B85803 40 CJNE R0,#58H,CONT
0036 02003F 41 JMP EXIT
0039 A6DA 42 CONT: MOV @R0,ADCDATAH
003B 08 43 INC R0
003C A6D9 44 MOV @R0,ADCDATAL
003E 08 45 INC R0
003F 32 46 EXIT: RETI
47
48
49 ;====================================================================
50 ; MAIN PROGRAM
004B 51 ORG 004Bh
52
004B 53 MAIN:
004B 7830 54 MOV R0,#BUFFER
55 ; PRECONFIGURE...
004D 75EF9E 56 MOV ADCCON1,#09Eh ; power up ADC & enable Timer2 mode
0050 75D800 57 MOV ADCCON2,#CHAN ; select channel to convert
0053 75CAF6 58 MOV RCAP2L,#0F6h ; sample period = 2 * T2 reload prd
ADCTIMER PAGE 2
0056 75CBFF 59 MOV RCAP2H,#0FFh ; = 2*(10000h-FFF6h)*5.722us
0059 75CCF6 60 MOV TL2,#0F6h ; = 2*9*5.722us
005C 75CDFF 61 MOV TH2,#0FFh ; = 102.99us
62
63 ; LAUNCH Timer2 DRIVEN CONVERSIONS...
005F D2AF 64 SETB EA ; enable interrupts
0061 D2AE 65 SETB EADC ; enable ADC interrupt
0063 D2CA 66 SETB TR2 ; run Timer2
67
68 ; CONTINUE WITH OTHER CODE...
0065 B2B3 69 AGAIN: CPL LED ; blink (complement) the LED
0067 7401 70 MOV A,#01H ; Delay length
0069 12006E 71 CALL DELAY ; delay 100ms
006C 80F7 72 JMP AGAIN ; repeat
73
74 ; the micro is free to continue with other tasks (flashing the LED in
75 ; this case) while the ADC operation is being controlled by Timer2
76 ; and the ADC interrupt service routine.
77
78 ;____________________________________________________________________
79 ; SUBROUTINE
006E 80 DELAY: ; Delays by 100ms * A
81 ; 100mSec based on 2.097152MHZ
82 ; Core Clock
83 ; i.e. default ADuC814 Clock
84
006E F9 85 MOV R1,A ; Acc holds delay variable
006F 7A22 86 DLY0: MOV R2,#022h ; Set up delay loop0
0071 7BFF 87 DLY1: MOV R3,#0FFh ; Set up delay loop1
0073 DBFE 88 DJNZ R3,$ ; Dec R3 & Jump here until R3 is 0
0075 DAFA 89 DJNZ R2,DLY1 ; Dec R2 & Jump DLY1 until R2 is 0
0077 D9F6 90 DJNZ R1,DLY0 ; Dec R1 & Jump DLY0 until R1 is 0
0079 22 91 RET ; Return from subroutine
92
93
94
95 ;____________________________________________________________________
96
97 END
VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND
ADCTIMER PAGE 3
ADCCON1. . . . . . . . . . . . . D ADDR 00EFH PREDEFINED
ADCCON2. . . . . . . . . . . . . D ADDR 00D8H PREDEFINED
ADCDATAH . . . . . . . . . . . . D ADDR 00DAH PREDEFINED
ADCDATAL . . . . . . . . . . . . D ADDR 00D9H PREDEFINED
AGAIN. . . . . . . . . . . . . . C ADDR 0065H
BUFFER . . . . . . . . . . . . . D ADDR 0030H
CHAN . . . . . . . . . . . . . . NUMB 0000H
CONT . . . . . . . . . . . . . . C ADDR 0039H
DELAY. . . . . . . . . . . . . . C ADDR 006EH
DLY0 . . . . . . . . . . . . . . C ADDR 006FH
DLY1 . . . . . . . . . . . . . . C ADDR 0071H
EA . . . . . . . . . . . . . . . B ADDR 00AFH PREDEFINED
EADC . . . . . . . . . . . . . . B ADDR 00AEH PREDEFINED
EXIT . . . . . . . . . . . . . . C ADDR 003FH
LED. . . . . . . . . . . . . . . NUMB 00B3H
LENGTH . . . . . . . . . . . . . NUMB 0028H
MAIN . . . . . . . . . . . . . . C ADDR 004BH
P3 . . . . . . . . . . . . . . . D ADDR 00B0H PREDEFINED
RCAP2H . . . . . . . . . . . . . D ADDR 00CBH PREDEFINED
RCAP2L . . . . . . . . . . . . . D ADDR 00CAH PREDEFINED
TH2. . . . . . . . . . . . . . . D ADDR 00CDH PREDEFINED
TL2. . . . . . . . . . . . . . . D ADDR 00CCH PREDEFINED
TR2. . . . . . . . . . . . . . . B ADDR 00CAH PREDEFINED
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -