📄 c52mcu_m16.lst
字号:
Interrupt Vectors
00000 940C 002A JMP __text_start|__start
Program Code (text area)
__text_start|__start:
0002A E5CF LDI R28,0x5F
0002B E0D4 LDI R29,4
0002C BFCD OUT 0x3D,R28
0002D BFDE OUT 0x3E,R29
0002E 51CE SUBI R28,0x1E
0002F 40D0 SBCI R29,0
00030 EA0A LDI R16,0xAA
00031 8308 ST Y,R16
00032 2400 CLR R0
00033 E6E0 LDI R30,0x60
00034 E0F0 LDI R31,0
00035 E010 LDI R17,0
00036 36E0 CPI R30,0x60
00037 07F1 CPC R31,R17
00038 F011 BEQ 0x003B
00039 9201 ST Z+,R0
0003A CFFB RJMP 0x0036
0003B 8300 ST Z,R16
0003C E5E4 LDI R30,0x54
0003D E0F0 LDI R31,0
0003E E6A0 LDI R26,0x60
0003F E0B0 LDI R27,0
00040 E010 LDI R17,0
00041 E000 LDI R16,0
00042 BF0B OUT 0x3B,R16
00043 35E4 CPI R30,0x54
00044 07F1 CPC R31,R17
00045 F021 BEQ 0x004A
00046 95C8 LPM
00047 9631 ADIW R30,1
00048 920D ST X+,R0
00049 CFF9 RJMP 0x0043
0004A 940E 0068 CALL _main
_exit:
0004C CFFF RJMP _exit
FILE: C:\HJ-1G-AVR\1LED~1\main.c
(0001) //开发环境:HJ-1G HJ-3G 开发板+AVR增强包套装
(0002) //芯片:ATMEGA16A
(0003) //编译器:ICCV7
(0004) //编写:慧净电子
(0005) //网址:WWW.HLMCU.COM QQ:121350852
(0006) //HJ-1G/3G开发板上的8个LED灯前后流动
(0007) //晶振:1M 12M
(0008) #include <iom16v.h>
(0009) #include <macros.h>
(0010) //#include "iom16v.h"
(0011) //#include "macros.h"
(0012) void Delay()
(0013) {
(0014) unsigned char a, b;
(0015) for (a = 1; a; a++)
_Delay:
a --> R16
b --> R18
0004D E001 LDI R16,1
0004E C006 RJMP 0x0055
(0016) for (b = 1; b; b++)
0004F E021 LDI R18,1
00050 C001 RJMP 0x0052
00051 9523 INC R18
00052 2322 TST R18
00053 F7E9 BNE 0x0051
00054 9503 INC R16
00055 2300 TST R16
00056 F7C1 BNE 0x004F
00057 9508 RET
_LED_On:
i --> R10
00058 92AA ST -Y,R10
00059 92BA ST -Y,R11
0005A 0158 MOVW R10,R16
(0017) ;
(0018) }
(0019)
(0020) void LED_On(int i)
(0021) {
(0022) PORTB = ~BIT(i); /* low output to turn LED on */
0005B E001 LDI R16,1
0005C E010 LDI R17,0
0005D 0195 MOVW R18,R10
0005E 940E 0099 CALL lsl16
00060 0118 MOVW R2,R16
00061 9420 COM R2
00062 9430 COM R3
00063 BA28 OUT 0x18,R2
(0023) Delay();
00064 DFE8 RCALL _Delay
00065 90B9 LD R11,Y+
00066 90A9 LD R10,Y+
00067 9508 RET
(0024) }
(0025)
(0026) void main()
(0027) {
(0028)
(0029) int i;
(0030) DDRB = 0xFF; /* output */
_main:
i --> R20
00068 EF8F LDI R24,0xFF
00069 BB87 OUT 0x17,R24
(0031) PORTB = 0x55; /* all off */
0006A E585 LDI R24,0x55
0006B BB88 OUT 0x18,R24
0006C C02A RJMP 0x0097
(0032) //PORTA|=BIT(PA4); //PA4输出高电平,WE拉高
(0033) //PORTA&=~BIT(PA4); //PA4输出低电平,关掉HC573
(0034) //DDRC|=BIT(PC7); //PC7设置为输出状态
(0035) //PORTC&=~BIT(PC7); //PC7输出低电平,关掉HC573
(0036) while (1)
(0037) {
(0038)
(0039) /* forward march */
(0040) for (i = 0; i < 8; i++)
0006D 2744 CLR R20
0006E 2755 CLR R21
(0041) LED_On(i);
0006F 018A MOVW R16,R20
00070 DFE7 RCALL _LED_On
00071 5F4F SUBI R20,0xFF
00072 4F5F SBCI R21,0xFF
00073 3048 CPI R20,0x8
00074 E0E0 LDI R30,0
00075 075E CPC R21,R30
00076 F3C4 BLT 0x006F
(0042) /* backward march */
(0043) for (i = 8; i > 0; i--)
00077 E048 LDI R20,0x8
00078 E050 LDI R21,0
(0044) LED_On(i);
00079 018A MOVW R16,R20
0007A DFDD RCALL _LED_On
0007B 5041 SUBI R20,1
0007C 4050 SBCI R21,0
0007D 2422 CLR R2
0007E 2433 CLR R3
0007F 1624 CP R2,R20
00080 0635 CPC R3,R21
00081 F3BC BLT 0x0079
(0045) /* skip */
(0046) for (i = 0; i < 8; i += 2)
00082 2744 CLR R20
00083 2755 CLR R21
(0047) LED_On(i);
00084 018A MOVW R16,R20
00085 DFD2 RCALL _LED_On
00086 5F4E SUBI R20,0xFE
00087 4F5F SBCI R21,0xFF
00088 3048 CPI R20,0x8
00089 E0E0 LDI R30,0
0008A 075E CPC R21,R30
0008B F3C4 BLT 0x0084
(0048) for (i = 7; i > 0; i -= 2)
0008C E047 LDI R20,7
0008D E050 LDI R21,0
(0049) LED_On(i);
FILE: <library>
0008E 018A MOVW R16,R20
0008F DFC8 RCALL _LED_On
00090 5042 SUBI R20,2
00091 4050 SBCI R21,0
00092 2422 CLR R2
00093 2433 CLR R3
00094 1624 CP R2,R20
00095 0635 CPC R3,R21
00096 F3BC BLT 0x008E
00097 CFD5 RJMP 0x006D
00098 9508 RET
lsl16:
00099 2322 TST R18
0009A F021 BEQ 0x009F
0009B 0F00 LSL R16
0009C 1F11 ROL R17
0009D 952A DEC R18
0009E CFFA RJMP lsl16
0009F 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -