📄 adc.s
字号:
.module adc.c
.area data(ram, con, rel)
_Type_flag::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile G:\猛\avr实践\AD\adc.c
.dbsym e Type_flag _Type_flag c
_channel_0_flag::
.blkb 1
.area idata
.byte 1
.area data(ram, con, rel)
.dbfile G:\猛\avr实践\AD\adc.c
.dbsym e channel_0_flag _channel_0_flag c
_channel_1_flag::
.blkb 1
.area idata
.byte 1
.area data(ram, con, rel)
.dbfile G:\猛\avr实践\AD\adc.c
.dbsym e channel_1_flag _channel_1_flag c
_channel_2_flag::
.blkb 1
.area idata
.byte 1
.area data(ram, con, rel)
.dbfile G:\猛\avr实践\AD\adc.c
.dbsym e channel_2_flag _channel_2_flag c
_channel_3_flag::
.blkb 1
.area idata
.byte 1
.area data(ram, con, rel)
.dbfile G:\猛\avr实践\AD\adc.c
.dbsym e channel_3_flag _channel_3_flag c
_Display_flag::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile G:\猛\avr实践\AD\adc.c
.dbsym e Display_flag _Display_flag c
_LED_table::
.blkb 2
.area idata
.byte 63,6
.area data(ram, con, rel)
.dbfile G:\猛\avr实践\AD\adc.c
.blkb 2
.area idata
.byte 91,'O
.area data(ram, con, rel)
.dbfile G:\猛\avr实践\AD\adc.c
.blkb 2
.area idata
.byte 'f,'m
.area data(ram, con, rel)
.dbfile G:\猛\avr实践\AD\adc.c
.blkb 2
.area idata
.byte 125,7
.area data(ram, con, rel)
.dbfile G:\猛\avr实践\AD\adc.c
.blkb 2
.area idata
.byte 127,'o
.area data(ram, con, rel)
.dbfile G:\猛\avr实践\AD\adc.c
.blkb 2
.area idata
.byte 'w,124
.area data(ram, con, rel)
.dbfile G:\猛\avr实践\AD\adc.c
.blkb 2
.area idata
.byte 57,94
.area data(ram, con, rel)
.dbfile G:\猛\avr实践\AD\adc.c
.blkb 2
.area idata
.byte 'y,'q
.area data(ram, con, rel)
.dbfile G:\猛\avr实践\AD\adc.c
.blkb 2
.area idata
.byte 'v,56
.area data(ram, con, rel)
.dbfile G:\猛\avr实践\AD\adc.c
.blkb 2
.area idata
.byte 55,62
.area data(ram, con, rel)
.dbfile G:\猛\avr实践\AD\adc.c
.blkb 2
.area idata
.byte 's,92
.area data(ram, con, rel)
.dbfile G:\猛\avr实践\AD\adc.c
.blkb 2
.area idata
.byte 64,0
.area data(ram, con, rel)
.dbfile G:\猛\avr实践\AD\adc.c
.dbsym e LED_table _LED_table A[24:24]c
.area vector(rom, abs)
.org 4
jmp _External_INT_0
.area data(ram, con, rel)
.dbfile G:\猛\avr实践\AD\adc.c
.area vector(rom, abs)
.org 8
jmp _External_INT_1
.area data(ram, con, rel)
.dbfile G:\猛\avr实践\AD\adc.c
.area vector(rom, abs)
.org 12
jmp _External_INT_2
.area data(ram, con, rel)
.dbfile G:\猛\avr实践\AD\adc.c
.area vector(rom, abs)
.org 84
jmp _ADC_INT
.area data(ram, con, rel)
.dbfile G:\猛\avr实践\AD\adc.c
.area text(rom, con, rel)
.dbfile G:\猛\avr实践\AD\adc.c
.dbfunc e main _main fV
; i -> R22
.even
_main::
.dbline -1
.dbline 90
; #include <iom128.h>
; #include <macros.h>
; #include <math.h>
; //LED 开关定义
;
; #define ADC_start 0x40
;
; #define Red_LED_on PORTB&~BIT(0)
; #define Red_LED_off PORTB|(1<<0)
; #define Green_LED_on PORTB&(~(1<<1))
; #define Green_LED_off PORTB|(1<<1)
; #define Yellow_LED_on PORTB&(~(1<<2))
; #define Yellow_LED_off PORTB|(1<<2)
; #define Blue_LED_on PORTB&(~(1<<3))
; #define Blue_LED_off PORTB|(1<<3)
;
; unsigned int AD_sample_value;
;
; unsigned char Type_flag = 0;
; unsigned char channel_0_flag = 1;
; unsigned char channel_1_flag = 1;
; unsigned char channel_2_flag = 1;
; unsigned char channel_3_flag = 1;
;
; //Display
; unsigned char number_baifen;
; unsigned char number_shifen;
; unsigned char number_ge_dot;
; unsigned char Display_type;
; unsigned char Display_value;
; unsigned char Display_flag = 0;
;
; unsigned char LED_table[]=
; {
; 0x3F, //"0"
; 0x06, //"1"
; 0x5B, //"2"
; 0x4F, //"3"
; 0x66, //"4"
; 0x6D, //"5"
; 0x7D, //"6"
; 0x07, //"7"
; 0x7F, //"8"
; 0x6F, //"9"
; 0x77, //"A"
; 0x7C, //"B"
; 0x39, //"C"
; 0x5E, //"D"
; 0x79, //"E"
; 0x71, //"F"
; 0x76, //"H"
; 0x38, //"L"
; 0x37, //"n"
; 0x3E, //"u"
; 0x73, //"P"
; 0x5C, //"o"
; 0x40, //"-"
; 0x00, //熄灭
; };
;
; //use for test;
;
; unsigned char m;
;
; //define Interrupt Vactor
;
; #pragma interrupt_handler External_INT_0:2 //外部中断0
; #pragma interrupt_handler External_INT_1:3 //外部中断1
; #pragma interrupt_handler External_INT_2:4 //外部中断2
; #pragma interrupt_handler ADC_INT:22 //ADC中断
;
; //pre_define
;
; void main(void);
; void Port_initialize(void);
; void ADC_initialize(void);
; void INT_initialize(void);
; void UART_initialize(void);
; void Delay(void);
; void External_INT_0(void);
; void ADC_INT(void);
; void External_INT_1(void);
; void External_INT_2(void);
; void LED_Display(unsigned char Channel_num,unsigned int Data);
; void DATA_to_NUM(unsigned int data);
;
;
;
; void main(void)
; {
.dbline 93
; unsigned char i;
;
; Port_initialize();
xcall _Port_initialize
.dbline 95
; //UART_initialize();
; INT_initialize();
xcall _INT_initialize
.dbline 96
; ADC_initialize();
xcall _ADC_initialize
.dbline 98
;
; for (; ; )
L2:
.dbline 99
; {
.dbline 101
;
; switch (Type_flag)
lds R20,_Type_flag
clr R21
cpi R20,1
ldi R30,0
cpc R21,R30
breq L9
cpi R20,2
ldi R30,0
cpc R21,R30
breq L10
cpi R20,3
ldi R30,0
cpc R21,R30
breq L11
xjmp L6
X0:
.dbline 102
; {
L9:
.dbline 111
; /*case 0: //发送的数值
; {
; Display_type = 0;
; Display_value = Tx_data;
;
; }break;
; */
; case 1: //发送计数
; {
.dbline 112
; Display_type = 1;
ldi R24,1
sts _Display_type,R24
.dbline 115
; //Display_value = Tx_counter;
;
; }break;
.dbline 115
xjmp L7
L10:
.dbline 118
;
; case 2: //接收的数值
; {
.dbline 119
; Display_type = 2;
ldi R24,2
sts _Display_type,R24
.dbline 122
; //Display_value = Rx_data;
;
; }break;
.dbline 122
xjmp L7
L11:
.dbline 125
;
; case 3: //接收计数
; {
.dbline 126
; Display_type = 3;
ldi R24,3
sts _Display_type,R24
.dbline 129
; //Display_value = Rx_counter;
;
; }break;
.dbline 129
xjmp L7
L6:
.dbline 132
;
; default:
; {
.dbline 133
; Display_type = 0x0;
clr R2
sts _Display_type,R2
.dbline 135
;
; }break;
.dbline 135
L7:
.dbline 138
; }
;
; if (Display_flag == 1)
lds R24,_Display_flag
cpi R24,1
brne L12
.dbline 139
; {
.dbline 141
; //DDRB |=0xF0;
; LED_Display(Display_type,AD_sample_value); //数码管显示
lds R18,_AD_sample_value
lds R19,_AD_sample_value+1
lds R16,_Display_type
xcall _LED_Display
.dbline 143
; //DDRB |=0xF0;
; }
xjmp L13
L12:
.dbline 145
; else
; {
.dbline 147
;
; LED_Display(Display_type,AD_sample_value);
lds R18,_AD_sample_value
lds R19,_AD_sample_value+1
lds R16,_Display_type
xcall _LED_Display
.dbline 150
;
;
; }
L13:
.dbline 154
;
;
;
; if (channel_0_flag == 0)
lds R2,_channel_0_flag
tst R2
brne L14
.dbline 155
; {
.dbline 156
; PORTB = Red_LED_on;
cbi 0x18,0
.dbline 158
;
; for (i=0;i<30 ;i++ )
clr R22
xjmp L19
L16:
.dbline 159
.dbline 160
xcall _Delay
.dbline 161
L17:
.dbline 158
inc R22
L19:
.dbline 158
cpi R22,30
brlo L16
.dbline 163
; {
; Delay();
; }
;
; channel_0_flag = 1;
ldi R24,1
sts _channel_0_flag,R24
.dbline 164
; }
xjmp L15
L14:
.dbline 166
; else
; {
.dbline 167
; PORTB = Red_LED_off;
sbi 0x18,0
.dbline 168
; }
L15:
.dbline 170
;
; if (channel_1_flag == 0)
lds R2,_channel_1_flag
tst R2
brne L20
.dbline 171
; {
.dbline 172
; PORTB = Green_LED_on;
cbi 0x18,1
.dbline 174
;
; for (i=0;i<30 ;i++ )
clr R22
xjmp L25
L22:
.dbline 175
.dbline 176
xcall _Delay
.dbline 177
L23:
.dbline 174
inc R22
L25:
.dbline 174
cpi R22,30
brlo L22
.dbline 179
; {
; Delay();
; }
;
; channel_1_flag = 1;
ldi R24,1
sts _channel_1_flag,R24
.dbline 180
; }
xjmp L21
L20:
.dbline 182
; else
; {
.dbline 183
; PORTB = Green_LED_off;
sbi 0x18,1
.dbline 184
; }
L21:
.dbline 186
;
; if (channel_2_flag == 0)
lds R2,_channel_2_flag
tst R2
brne L26
.dbline 187
; {
.dbline 188
; PORTB = Yellow_LED_on;
cbi 0x18,2
.dbline 190
;
; for (i=0;i<30 ;i++ )
clr R22
xjmp L31
L28:
.dbline 191
.dbline 192
xcall _Delay
.dbline 193
L29:
.dbline 190
inc R22
L31:
.dbline 190
cpi R22,30
brlo L28
.dbline 195
; {
; Delay();
; }
;
; channel_2_flag = 1;
ldi R24,1
sts _channel_2_flag,R24
.dbline 196
; }
xjmp L27
L26:
.dbline 198
; else
; {
.dbline 199
; PORTB = Yellow_LED_off;
sbi 0x18,2
.dbline 200
; }
L27:
.dbline 202
;
; if (channel_3_flag == 0)
lds R2,_channel_3_flag
tst R2
brne L32
.dbline 203
; {
.dbline 204
; PORTB = Blue_LED_on;
cbi 0x18,3
.dbline 206
;
; for (i=0;i<30 ;i++ )
clr R22
xjmp L37
L34:
.dbline 207
.dbline 208
xcall _Delay
.dbline 209
L35:
.dbline 206
inc R22
L37:
.dbline 206
cpi R22,30
brlo L34
.dbline 211
; {
; Delay();
; }
;
; channel_3_flag = 1;
ldi R24,1
sts _channel_3_flag,R24
.dbline 212
; }
xjmp L2
L32:
.dbline 214
.dbline 215
sbi 0x18,3
.dbline 216
.dbline 217
.dbline 98
.dbline 98
xjmp L2
X1:
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r i 22 c
.dbend
.dbfunc e Port_initialize _Port_initialize fV
.even
_Port_initialize::
.dbline -1
.dbline 221
; else
; {
; PORTB = Blue_LED_off;
; }
; }
; }
;
; void Port_initialize(void)
; {
.dbline 222
; DDRA = 0xFF;
ldi R24,255
out 0x1a,R24
.dbline 223
; DDRB |= 0x0F;
in R24,0x17
ori R24,15
out 0x17,R24
.dbline 224
; DDRD = 0x00;
clr R2
out 0x11,R2
.dbline 225
; PORTB = 0xFF;
ldi R24,255
out 0x18,R24
.dbline -2
.dbline 226
; }
L38:
.dbline 0 ; func end
ret
.dbend
.dbfunc e ADC_initialize _ADC_initialize fV
.even
_ADC_initialize::
.dbline -1
.dbline 228
; void ADC_initialize(void)
; {
.dbline 229
; ADMUX = 0x40; //Vref = AVCC,right,channel = 0
ldi R24,64
out 0x7,R24
.dbline 230
; ADCSR = 0x89; //enable ADC,not start now,not continuous,F--,clock = f/2
ldi R24,137
out 0x6,R24
.dbline -2
.dbline 233
;
;
; }
L39:
.dbline 0 ; func end
ret
.dbend
.dbfunc e INT_initialize _INT_initialize fV
.even
_INT_initialize::
.dbline -1
.dbline 235
; void INT_initialize(void)
; {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -