📄 adctimer.lst
字号:
ADCTIMER PAGE 1
1 ;********************************************************************
2 ;
3 ; Author : ADI - Apps www.analog.com/MicroConverter
4 ;
5 ; Date : 28 May 1999
6 ;
7 ; File : ADCtimer.asm
8 ;
9 ; Hardware : ADuC812
10 ;
11 ; Description : Performs ADC conversions at 10KSPS in Timer2 mode.
12 ; Outputs ADC results on P0 & P2. Continuously
13 ; flashes LED (independently of ADC routine) at
14 ; approximately 5Hz.
15 ; All rate calculations assume an 11.0592MHz Mclk.
16 ;
17 ;********************************************************************
18
19 $MOD812 ; Use 8052&ADuC812 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 8
24 ;____________________________________________________________________
25 ; BEGINNING OF CODE
---- 26 CSEG
27
0000 28 ORG 0000h
29
0000 02004B 30 JMP MAIN ; jump to main program
31 ;____________________________________________________________________
32 ; INTERRUPT VECTOR SPACE
0033 33 ORG 0033H ; (ADC ISR)
34
0033 85D980 35 MOV P0,ADCDATAL ; ADC result low byte to Port0
0036 85DAA0 36 MOV P2,ADCDATAH ; high nibble and channel ID to Port2
0039 32 37 RETI
38
39 ;====================================================================
40 ; MAIN PROGRAM
004B 41 ORG 004Bh
42
004B 43 MAIN:
44
45 ; PRECONFIGURE...
004B 75EF62 46 MOV ADCCON1,#062h ; power up ADC & enable Timer2 mode
004E 75D800 47 MOV ADCCON2,#CHAN ; select channel to convert
0051 75CAD2 48 MOV RCAP2L,#0D2h ; sample period = 2 * T2 reload prd
0054 75CBFF 49 MOV RCAP2H,#0FFh ; = 2*(10000h-FFD2h)*1.085us
0057 75CCD2 50 MOV TL2,#0D2h ; = 2*46*1.085us
005A 75CDFF 51 MOV TH2,#0FFh ; = 99.8us
52
53 ; LAUNCH Timer2 DRIVEN CONVERSIONS...
005D D2AF 54 SETB EA ; enable interrupts
005F D2AE 55 SETB EADC ; enable ADC interrupt
0061 D2CA 56 SETB TR2 ; run Timer2
57
58 ; CONTINUE WITH OTHER CODE...
ADCTIMER PAGE 2
0063 B2B4 59 AGAIN: CPL LED ; blink (complement) the LED
0065 12006A 60 CALL DELAY ; delay 100ms
0068 80F9 61 JMP AGAIN ; repeat
62
63 ; the micro is free to continue with other tasks (flashing the LED in
64 ; this case) while the ADC operation is being controlled by Timer2
65 ; and the ADC interrupt service routine.
66
67 ;____________________________________________________________________
68 ; SUBROUTINE
69
006A 70 DELAY: ; delay 100ms
71
006A 7FC8 72 MOV R7,#200 ; 200 * 500us = 100ms
006C 7EE5 73 DLY1: MOV R6,#229 ; 229 * 2.17us = 500us
006E DEFE 74 DJNZ R6,$ ; sit here for 500us
0070 DFFA 75 DJNZ R7,DLY1 ; repeat 200 times (100ms total)
0072 22 76 RET
77
78 ;____________________________________________________________________
79
80 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 0063H
CHAN . . . . . . . . . . . . . . NUMB 0000H
DELAY. . . . . . . . . . . . . . C ADDR 006AH
DLY1 . . . . . . . . . . . . . . C ADDR 006CH
EA . . . . . . . . . . . . . . . B ADDR 00AFH PREDEFINED
EADC . . . . . . . . . . . . . . B ADDR 00AEH PREDEFINED
LED. . . . . . . . . . . . . . . NUMB 00B4H
MAIN . . . . . . . . . . . . . . C ADDR 004BH
P0 . . . . . . . . . . . . . . . D ADDR 0080H PREDEFINED
P2 . . . . . . . . . . . . . . . D ADDR 00A0H PREDEFINED
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 + -