📄 test.s
字号:
.module test.c
.area text(rom, con, rel)
.dbfile E:\工作\数字功放\程序\test.c
.dbfunc e adc_init _adc_init fV
.even
_adc_init::
.dbline -1
.dbline 9
; #include <iom88v.h>
; #include <macros.h>
; #include <math.h>
;
;
;
; //******************************************************/
; void adc_init(void)
; {
.dbline 10
; ADCSRA = 0x00;
clr R2
sts 122,R2
.dbline 11
; ACSR = (1<<ACD);
ldi R24,128
out 0x30,R24
.dbline 12
; ADCSRA = (1<<ADEN)|(1<<ADPS2);
ldi R24,132
sts 122,R24
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e timer1_init _timer1_init fV
.even
_timer1_init::
.dbline -1
.dbline 16
; }
; //****************************************************/
; void timer1_init(void)
; {
.dbline 19
;
;
; TCCR1B = 0x00;
clr R2
sts 129,R2
.dbline 21
;
; TCNT1H = 0xFF;
ldi R24,255
sts 133,R24
.dbline 22
; TCNT1L = 0x38;
ldi R24,56
sts 132,R24
.dbline 24
;
; OCR1AH = 0x00;
sts 137,R2
.dbline 25
; OCR1AL = 0x00;
sts 136,R2
.dbline 27
;
; OCR1BH = 0x00;
sts 139,R2
.dbline 28
; OCR1BL = 0x00;
sts 138,R2
.dbline 30
;
; ICR1H = 0x01;
ldi R24,1
sts 135,R24
.dbline 31
; ICR1L = 0x8F;
ldi R24,143
sts 134,R24
.dbline 33
;
; TCCR1A = (1<<COM1A1)|(1<<COM1B0)|(1<<COM1B1)|(1<<WGM11);
ldi R24,178
sts 128,R24
.dbline 34
; TCCR1B = (1<<WGM13)|(1<<WGM12)|(1<<CS10);
ldi R24,25
sts 129,R24
.dbline 35
; TIMSK1 = 0x20;
ldi R24,32
sts 111,R24
.dbline -2
L2:
.dbline 0 ; func end
ret
.dbend
.area vector(rom, abs)
.org 20
rjmp _timer1_capt_isr
.area text(rom, con, rel)
.dbfile E:\工作\数字功放\程序\test.c
.dbfunc e timer1_capt_isr _timer1_capt_isr fV
.even
_timer1_capt_isr::
st -y,R24
st -y,R25
in R24,0x3f
st -y,R24
.dbline -1
.dbline 40
; }
; //*************************************************/
; #pragma interrupt_handler timer1_capt_isr:11
; void timer1_capt_isr(void)
; {
.dbline 41
; ADMUX = 0x43;
ldi R24,67
sts 124,R24
.dbline 42
; ADCSRA |= (1<<ADSC);
lds R24,122
ori R24,64
sts 122,R24
.dbline 44
;
; OCR1A = ADC & 0x03FF;
lds R24,120
lds R25,120+1
andi R25,3
sts 136+1,R25
sts 136,R24
.dbline 45
; OCR1B = ADC & 0x03FF;
lds R24,120
lds R25,120+1
andi R25,3
sts 138+1,R25
sts 138,R24
.dbline -2
L3:
ld R24,y+
out 0x3f,R24
ld R25,y+
ld R24,y+
.dbline 0 ; func end
reti
.dbend
.area vector(rom, abs)
.org 42
rjmp _adc_isr
.area text(rom, con, rel)
.dbfile E:\工作\数字功放\程序\test.c
.dbfunc e adc_isr _adc_isr fV
.even
_adc_isr::
.dbline -1
.dbline 50
; }
; //*******************************************************************
; #pragma interrupt_handler adc_isr:22
; void adc_isr(void)
; {
.dbline -2
L4:
.dbline 0 ; func end
reti
.dbend
.dbfunc e delay_1us _delay_1us fV
.even
_delay_1us::
.dbline -1
.dbline 57
;
; }
; /*********************************************************************
; 延时
; *********************************************************************/
; void delay_1us(void)
; {
.dbline 58
; asm("nop");
nop
.dbline -2
L5:
.dbline 0 ; func end
ret
.dbend
.dbfunc e delay_nus _delay_nus fV
; i -> R20,R21
; n -> R22,R23
.even
_delay_nus::
rcall push_gset2
movw R22,R16
.dbline -1
.dbline 61
; }
; void delay_nus(unsigned int n)
; {
.dbline 62
; unsigned int i=0;
clr R20
clr R21
.dbline 63
rjmp L10
L7:
.dbline 63
rcall _delay_1us
L8:
.dbline 63
subi R20,255 ; offset = 1
sbci R21,255
L10:
.dbline 63
; for (i=0;i<n;i++) delay_1us();
cp R20,R22
cpc R21,R23
brlo L7
.dbline -2
L6:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r n 22 i
.dbend
.dbfunc e delay_1ms _delay_1ms fV
; i -> R16,R17
.even
_delay_1ms::
.dbline -1
.dbline 66
; }
; void delay_1ms(void)
; {
.dbline 68
clr R16
clr R17
rjmp L15
L12:
.dbline 68
L13:
.dbline 68
subi R16,255 ; offset = 1
sbci R17,255
L15:
.dbline 68
; unsigned int i;
; for (i=0;i<1140;i++);
cpi R16,116
ldi R30,4
cpc R17,R30
brlo L12
.dbline -2
L11:
.dbline 0 ; func end
ret
.dbsym r i 16 i
.dbend
.dbfunc e delay_nms _delay_nms fV
; i -> R20,R21
; n -> R22,R23
.even
_delay_nms::
rcall push_gset2
movw R22,R16
.dbline -1
.dbline 71
; }
; void delay_nms(unsigned int n)
; {
.dbline 72
; unsigned int i=0;
clr R20
clr R21
.dbline 73
rjmp L20
L17:
.dbline 73
rcall _delay_1ms
L18:
.dbline 73
subi R20,255 ; offset = 1
sbci R21,255
L20:
.dbline 73
; for (i=0;i<n;i++) delay_1ms();
cp R20,R22
cpc R21,R23
brlo L17
.dbline -2
L16:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r n 22 i
.dbend
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 77
; }
; //******************************************************************
; void main(void)
; {
.dbline 78
; WDR();
wdr
.dbline 79
; WDTCSR = 0x1F;
ldi R24,31
sts 96,R24
.dbline 80
; WDTCSR = 0x0F;
ldi R24,15
sts 96,R24
.dbline 81
; WDR();
wdr
.dbline 83
;
; DDRB |= (1<<PB1)|(1<<PB2);
in R24,0x4
ori R24,6
out 0x4,R24
.dbline 85
;
; CLI();
cli
.dbline 86
; timer1_init();
rcall _timer1_init
.dbline 87
; adc_init();
rcall _adc_init
.dbline 88
; SEI();
sei
rjmp L23
L22:
.dbline 91
.dbline 92
wdr
.dbline 93
L23:
.dbline 90
rjmp L22
X0:
.dbline -2
L21:
.dbline 0 ; func end
ret
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -