⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 io_wr.lst

📁 AVR单片机ATMEGA128实习之—IO口操作(附带Proteus仿真例子)
💻 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 + -