📄 io口.s
字号:
.module IO口.c
.area text(rom, con, rel)
; i -> R16,R17
.even
_delay_1ms::
; #include <iom128v.h>
; void delay_1ms(void)
; {
clr R16
clr R17
xjmp L5
L2:
L3:
subi R16,255 ; offset = 1
sbci R17,255
L5:
; unsigned int i;
; for (i=0;i<2286;i++);
cpi R16,238
ldi R30,8
cpc R17,R30
brlo L2
L1:
.dbline 0 ; func end
ret
; i -> R20,R21
; n -> R22,R23
.even
_delay_nms::
xcall push_gset2
movw R22,R16
; }
; void delay_nms(unsigned int n)
; { unsigned int i=0;
clr R20
clr R21
; for (i=0;i<n;i++)
xjmp L10
L7:
xcall _delay_1ms
L8:
subi R20,255 ; offset = 1
sbci R21,255
L10:
cp R20,R22
cpc R21,R23
brlo L7
L6:
xcall pop_gset2
.dbline 0 ; func end
ret
; a -> <dead>
.even
_main::
; delay_1ms();
; }
; void main()
; {unsigned char a;
; DDRA=0x00;
clr R2
out 0x1a,R2
; DDRC=0X00;
out 0x14,R2
; DDRE=0X00;
out 0x2,R2
; DDRB=0x01;
ldi R24,1
out 0x17,R24
; DDRD=0X01;
out 0x11,R24
; DDRF=0X01;
sts 97,R24
xjmp L13
L12:
; while(1)
; {
; if((PINA & 0x01)==0)
in R24,0x19
andi R24,1
brne L15
; { PORTB=~PORTB;
in R2,0x18
com R2
out 0x18,R2
;
; delay_nms(10);
ldi R16,10
ldi R17,0
xcall _delay_nms
; }
xjmp L16
L15:
; else PORTB=0XFF;
ldi R24,255
out 0x18,R24
L16:
;
; if((PINC& 0x02)==0)
in R24,0x13
andi R24,2
brne L17
; {
; PORTD=~PORTD;
in R2,0x12
com R2
out 0x12,R2
; delay_nms(10);
ldi R16,10
ldi R17,0
xcall _delay_nms
; }
xjmp L18
L17:
; else PORTD=0XFF;
ldi R24,255
out 0x12,R24
L18:
; if((PINE & 0x04)==0)
in R24,0x1
andi R24,4
brne L19
; {
; PORTF=~PORTF;
lds R2,98
com R2
sts 98,R2
; delay_nms(10);
ldi R16,10
ldi R17,0
xcall _delay_nms
; }
xjmp L20
L19:
; else PORTF=0XFF;
ldi R24,255
sts 98,R24
L20:
L13:
xjmp L12
X0:
L11:
.dbline 0 ; func end
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -