📄 io_wr.lst
字号:
__start:
__text_start:
0046 EFCF LDI R28,0xFF
0047 E1D0 LDI R29,0x10
0048 BFCD OUT P3D,R28
0049 BFDE OUT P3E,R29
004A 51C0 SUBI R28,0x10
004B 40D0 SBCI R29,0
004C EA0A LDI R16,0xAA
004D 8308 STD R16,0+Y
004E 2400 CLR R0
004F E0E0 LDI R30,0
0050 E0F1 LDI R31,1
0051 E011 LDI R17,1
0052 30E0 CPI R30,0
0053 07F1 CPC R31,R17
0054 F011 BEQ 0x0057
0055 9201 ST R0,Z+
0056 CFFB RJMP 0x0052
0057 8300 STD R16,0+Z
0058 E8EC LDI R30,0x8C
0059 E0F0 LDI R31,0
005A E0A0 LDI R26,0
005B E0B1 LDI R27,1
005C E010 LDI R17,0
005D 38EC CPI R30,0x8C
005E 07F1 CPC R31,R17
005F F021 BEQ 0x0064
0060 95C8 LPM
0061 9631 ADIW R30,1
0062 920D ST R0,X+
0063 CFF9 RJMP 0x005D
0064 940E0067 CALL _main
_exit:
0066 CFFF RJMP _exit
FILE: G:\猛\avr实践\IO读写\IO_WR.c
(0001) //
(0002) /*----------------------------------------------
(0003)
(0004) 王猛 2006.10.10
(0005) 说明: PB口的低四位作为输入,高四位作为输出
(0006) 输出状态为低四位的输入值,其他口除AC
(0007) 外,输出PB的状态,E口为取反
(0008)
(0009) -----------------------------------------------*/
(0010) //
(0011) #include <iom128.h>
(0012) void main(void)
(0013) {
(0014) unsigned char achar;
(0015) unsigned char i;
(0016)
(0017) DDRB = 0xFF;
_main:
achar --> R16
i --> R18
0067 EF8F LDI R24,0xFF
0068 BB87 OUT P17,R24
(0018) DDRE = 0xFF;
0069 B982 OUT P02,R24
(0019) DDRF = 0xFF;
006A 93800061 STS 0x61,R24
(0020) DDRG = 0xFF;
006C 93800064 STS 0x64,R24
(0021) DDRD = 0xF0;
006E EF80 LDI R24,0xF0
006F BB81 OUT P11,R24
(0022) PORTD = 0x00;
0070 2422 CLR R2
0071 BA22 OUT P12,R2
(0023)
(0024) achar = PIND;
0072 B300 IN R16,P10
(0025) PORTD |= achar<<4;
0073 2F80 MOV R24,R16
0074 708F ANDI R24,0xF
0075 9582 SWAP R24
0076 B222 IN R2,P12
0077 2A28 OR R2,R24
0078 BA22 OUT P12,R2
(0026)
(0027) for (i = 0; i<3; i++ ) //延时有必要,等待端口写完毕再读出端口的状态
0079 2722 CLR R18
007A C001 RJMP 0x007C
007B 9523 INC R18
007C 3023 CPI R18,3
007D F3E8 BCS 0x007B
(0028) {
(0029) }
(0030)
(0031) achar = PIND;
007E B300 IN R16,P10
(0032)
(0033) PORTB = achar;
007F BB08 OUT P18,R16
(0034) PORTE = ~achar;
0080 2E20 MOV R2,R16
0081 9420 COM R2
0082 B823 OUT P03,R2
(0035) PORTF = achar;
0083 93000062 STS 0x62,R16
(0036) PORTG = achar;
0085 93000065 STS 0x65,R16
(0037)
(0038) for(;;)
FILE: <library>
0087 CFFF RJMP 0x0087
0088 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -