📄 q1.s
字号:
.module q1.c
.area data(ram, con, rel)
_i::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile q1.c
.dbsym e i _i c
.area text(rom, con, rel)
.dbfile q1.c
.dbfunc e delay_2us _delay_2us fV
; time -> R16,R17
.even
_delay_2us::
.dbline -1
.dbline 14
; #include "iom16v.h"
; #define LOBYTE(a) ((BYTE)(a&0x0f))
; #define HIBYTE(a) ((BYTE)((a)>>4))
; #define _asm asm
; #define WDR() asm("wdr")
; #define SEI() asm("sei")
; #define CLI() asm("cli")
; #define NOP() asm("nop")
; #define SLEEP() asm("sleep")
; #define led_on() (PORTA =0x00)
; #define led_off() (PORTA =0xff)
; char i=0;
; void delay_2us(int time)//微秒级延时程序
; {
L2:
.dbline 16
; do
; {
.dbline 17
; time--;
subi R16,1
sbci R17,0
.dbline 19
; //WDR();
; }
L3:
.dbline 20
; while (time>1);
ldi R24,1
ldi R25,0
cp R24,R16
cpc R25,R17
brlt L2
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r time 16 I
.dbend
.dbfunc e delay_ms _delay_ms fV
; time -> R20,R21
.even
_delay_ms::
xcall push_gset1
movw R20,R16
.dbline -1
.dbline 23
; }
; void delay_ms(unsigned int time)//毫秒级延时程序
; {
xjmp L7
L6:
.dbline 25
.dbline 26
ldi R16,500
ldi R17,1
xcall _delay_2us
.dbline 27
subi R20,1
sbci R21,0
.dbline 28
L7:
.dbline 24
; while(time!=0)
cpi R20,0
cpc R20,R21
brne L6
X0:
.dbline -2
L5:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r time 20 i
.dbend
.dbfunc e port_init _port_init fV
.even
_port_init::
.dbline -1
.dbline 32
; {
; delay_2us(500);
; time--;
; }
; //WDR();
; }
; void port_init(void)
; {
.dbline 33
; DDRA = 0xff;
ldi R24,255
out 0x1a,R24
.dbline 34
; PORTA = 0x00;
clr R2
out 0x1b,R2
.dbline -2
L9:
.dbline 0 ; func end
ret
.dbend
.dbfunc e T_init _T_init fV
.even
_T_init::
.dbline -1
.dbline 37
; }
; void T_init(void)
; {
.dbline 38
; TCCR1A=0x00;
clr R2
out 0x2f,R2
.dbline 39
; TCCR1B=0x00; //停止定时器1
out 0x2e,R2
.dbline 41
;
; TCNT1H=0xc2;
ldi R24,194
out 0x2d,R24
.dbline 42
; TCNT1L=0xf7; //定时0.5s
ldi R24,247
out 0x2c,R24
.dbline 44
;
; TCCR1B=0x04; //256分频
ldi R24,4
out 0x2e,R24
.dbline -2
L10:
.dbline 0 ; func end
ret
.dbend
.area vector(rom, abs)
.org 32
jmp _timer1_ovf
.area text(rom, con, rel)
.dbfile q1.c
.dbfunc e timer1_ovf _timer1_ovf fV
.even
_timer1_ovf::
st -y,R2
st -y,R24
in R2,0x3f
st -y,R2
.dbline -1
.dbline 49
;
; }
; #pragma interrupt_handler timer1_ovf:9
; void timer1_ovf(void) //位闪动即修改
; {
.dbline 50
; TCNT1H=0xc2;
ldi R24,194
out 0x2d,R24
.dbline 51
; TCNT1L=0xf7;
ldi R24,247
out 0x2c,R24
.dbline 52
; TCCR1B=0x04;
ldi R24,4
out 0x2e,R24
.dbline 53
; if(i==1){i=0;led_on();}
lds R24,_i
cpi R24,1
brne L12
.dbline 53
.dbline 53
clr R2
sts _i,R2
.dbline 53
out 0x1b,R2
.dbline 53
xjmp L13
L12:
.dbline 54
.dbline 54
ldi R24,1
sts _i,R24
.dbline 54
ldi R24,255
out 0x1b,R24
.dbline 54
L13:
.dbline -2
L11:
ld R2,y+
out 0x3f,R2
ld R24,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbend
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 57
; else {i=1;led_off();}
; }
; void main(void)
; {
.dbline 58
; port_init();
xcall _port_init
.dbline 59
; T_init();
xcall _T_init
.dbline 60
; TIMSK=0X45;
ldi R24,69
out 0x39,R24
.dbline 61
; SEI();
sei
xjmp L16
L15:
.dbline 63
.dbline 64
ldi R16,1000
ldi R17,3
xcall _delay_ms
.dbline 68
L16:
.dbline 62
xjmp L15
X1:
.dbline -2
L14:
.dbline 0 ; func end
ret
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -