📄 io_wr.s
字号:
.module IO_WR.c
.area text(rom, con, rel)
.dbfile G:\猛\avr实践\IO读写\IO_WR.c
.dbfunc e main _main fV
; achar -> R16
; i -> R18
.even
_main::
.dbline -1
.dbline 13
; //
; /*----------------------------------------------
;
; 王猛 2006.10.10
; 说明: PB口的低四位作为输入,高四位作为输出
; 输出状态为低四位的输入值,其他口除AC
; 外,输出PB的状态,E口为取反
;
; -----------------------------------------------*/
; //
; #include <iom128.h>
; void main(void)
; {
.dbline 17
; unsigned char achar;
; unsigned char i;
;
; DDRB = 0xFF;
ldi R24,255
out 0x17,R24
.dbline 18
; DDRE = 0xFF;
out 0x2,R24
.dbline 19
; DDRF = 0xFF;
sts 97,R24
.dbline 20
; DDRG = 0xFF;
sts 100,R24
.dbline 21
; DDRD = 0xF0;
ldi R24,240
out 0x11,R24
.dbline 22
; PORTD = 0x00;
clr R2
out 0x12,R2
.dbline 24
;
; achar = PIND;
in R16,0x10
.dbline 25
; PORTD |= achar<<4;
mov R24,R16
andi R24,#0x0F
swap R24
in R2,0x12
or R2,R24
out 0x12,R2
.dbline 27
;
; for (i = 0; i<3; i++ ) //延时有必要,等待端口写完毕再读出端口的状态
clr R18
xjmp L5
L2:
.dbline 28
.dbline 29
L3:
.dbline 27
inc R18
L5:
.dbline 27
cpi R18,3
brlo L2
.dbline 31
; {
; }
;
; achar = PIND;
in R16,0x10
.dbline 33
;
; PORTB = achar;
out 0x18,R16
.dbline 34
; PORTE = ~achar;
mov R2,R16
com R2
out 0x3,R2
.dbline 35
; PORTF = achar;
sts 98,R16
.dbline 36
; PORTG = achar;
sts 101,R16
.dbline 38
;
; for(;;)
L6:
.dbline 39
.dbline 40
.dbline 38
.dbline 38
xjmp L6
X0:
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r achar 16 c
.dbsym r i 18 c
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -