📄 p.lst
字号:
__text_start:
__start:
001D E5CF LDI R28,0x5F
001E E0D4 LDI R29,4
001F BFCD OUT 0x3D,R28
0020 BFDE OUT 0x3E,R29
0021 51C0 SUBI R28,0x10
0022 40D0 SBCI R29,0
0023 EA0A LDI R16,0xAA
0024 8308 STD Y+0,R16
0025 2400 CLR R0
0026 E7E3 LDI R30,0x73
0027 E0F0 LDI R31,0
0028 E010 LDI R17,0
0029 38E6 CPI R30,0x86
002A 07F1 CPC R31,R17
002B F011 BEQ 0x002E
002C 9201 ST R0,Z+
002D CFFB RJMP 0x0029
002E 8300 STD Z+0,R16
002F E2E6 LDI R30,0x26
0030 E0F0 LDI R31,0
0031 E6A0 LDI R26,0x60
0032 E0B0 LDI R27,0
0033 E010 LDI R17,0
0034 33E9 CPI R30,0x39
0035 07F1 CPC R31,R17
0036 F021 BEQ 0x003B
0037 95C8 LPM
0038 9631 ADIW R30,1
0039 920D ST R0,X+
003A CFF9 RJMP 0x0034
003B D01E RCALL _main
_exit:
003C CFFF RJMP _exit
FILE: p.c
(0001)
(0002) #include<iom8v.h> //包含ATMEGA8的头文件
(0003) #include<macros.h> //包含一些常用宏的定义
(0004) //#define osccal 0xaa//内部RC 校正常数
(0005) #define fosc 8000000 //晶振8MHZ
(0006) #define baud 4800 //波特率
(0007) #define osccal_addr 0x1ff
(0008) //内部晶体震荡器校正字存放地址
(0009) #define uchar unsigned char
(0010)
(0011) unsigned char e,Getbit,f,xx,i,ic=2,K,c,j,A,d,h1,l1,d1,t,s,
(0012) Getdata[9]={0xee,0xee,0,0,0,0,0,0,0},
(0013) Getdata_bak[9]={0xee,0xee,0,0,0,0,0,0,0};
(0014) unsigned int m,n;
(0015) ///////////////延时
(0016) void delay(unsigned int x)
(0017) {
_delay:
x --> R16
003D C00D RJMP 0x004B
(0018) while(x-->0)
(0019) {
(0020) for(j=0;j<5;j++)
003E 2422 CLR R2
003F 9220007E STS _j,R2
0041 C005 RJMP 0x0047
0042 9180007E LDS R24,_j
0044 5F8F SUBI R24,0xFF
0045 9380007E STS _j,R24
0047 9180007E LDS R24,_j
0049 3085 CPI R24,5
004A F3B8 BCS 0x0042
004B 0118 MOVW R2,R16
004C 5001 SUBI R16,1
004D 4010 SBCI R17,0
004E 2022 TST R2
004F F771 BNE 0x003E
0050 2033 TST R3
0051 F761 BNE 0x003E
(0021) {;}
(0022) }
(0023) }
0052 9508 RET
(0024)
(0025) unsigned char EEPROM_read(unsigned int uiAddress)
(0026) {while(EECR&(1<<EEWE));
_EEPROM_read:
uiAddress --> R16
0053 99E1 SBIC 0x1C,1
0054 CFFE RJMP _EEPROM_read
(0027) EEAR=uiAddress;
0055 BB1F OUT 0x1F,R17
0056 BB0E OUT 0x1E,R16
(0028) EECR|=(1<<EERE);
0057 9AE0 SBI 0x1C,0
(0029) return EEDR;
0058 B30D IN R16,0x1D
0059 9508 RET
(0030) }
(0031)
(0032)
(0033) void main(void)
(0034) { delay(9000);
_main:
005A E208 LDI R16,0x28
005B E213 LDI R17,0x23
005C DFE0 RCALL _delay
(0035) OSCCAL=EEPROM_read(osccal_addr);
005D EF0F LDI R16,0xFF
005E E011 LDI R17,1
005F DFF3 RCALL _EEPROM_read
0060 BF01 OUT 0x31,R16
(0036) DDRD=0xff; //IO口的初始化
0061 EF8F LDI R24,0xFF
0062 BB81 OUT 0x11,R24
(0037) SEI();//开全局中断
0063 9478 BSET 7
0064 C005 RJMP 0x006A
(0038)
(0039)
(0040) while(1)
(0041) {
(0042) PORTD|=(1<<3);////////////////////////////////
0065 9A93 SBI 0x12,3
(0043) PORTD&=~(1<<3);
0066 9893 CBI 0x12,3
(0044) delay(100);
0067 E604 LDI R16,0x64
0068 E010 LDI R17,0
0069 DFD3 RCALL _delay
006A CFFA RJMP 0x0065
(0045) }
(0046) }
FILE: <library>
006B 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -