📄 c52mcu_m16.lst
字号:
Interrupt Vectors
00000 940C 002A JMP __start|__text_start
Program Code (text area)
__start|__text_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 009F CALL _main
_exit:
0004C CFFF RJMP _exit
_Delayus:
i --> R20
US --> R10
0004D 940E 00BE CALL push_xgset300C
0004F 0158 MOVW R10,R16
FILE: C:\iccv7avr\include\HJ-1G_AVR.H
(0001) /*******************************************
(0002) 文件:HJ-1G_AVR.H
(0003) 功能:定义一些AVR_HJ-2G开发板上应用程序用到的常量
(0004) /******************************************/
(0005)
(0006) #include <iom16v.h> //包含型号头文件
(0007) #include <macros.h> //包含"位"操作头文件
(0008)
(0009) /******************数据类型宏定义******************/
(0010) #define uchar unsigned char
(0011) #define uint unsigned int
(0012)
(0013) /******************数码管和LED常量******************/
(0014) #define LEDLK PA2 //LED锁存器控制端
(0015) #define SEGLK PA3 //数码管段选锁存器控制端
(0016) #define BITLK PA4 //数码管位选锁存器控制端
(0017)
(0018) #define TRUE 1
(0019) #define FALSE 0
(0020) #define ALLLED 0XFF
(0021) /*******************************************
(0022) 函数名称: Delayus
(0023) 功 能: 延时指定微秒(8M晶振)
(0024) 参 数: US--延时的微秒数(大约,不是很精确,MS越大越准确)
(0025) 返回值 : 无
(0026) /********************************************/
(0027) void Delayus(uint US)
(0028) {
(0029) uint i;
(0030) US=US*5/4; //5/4是在8MHz晶振下,通过软件仿真反复实验得到的数值
00050 E005 LDI R16,5
00051 E010 LDI R17,0
00052 0195 MOVW R18,R10
00053 940E 00AE CALL empy16s
00055 0158 MOVW R10,R16
00056 94B6 LSR R11
00057 94A7 ROR R10
00058 94B6 LSR R11
00059 94A7 ROR R10
(0031) for( i=0;i<US;i++);
0005A 2744 CLR R20
0005B 2755 CLR R21
0005C C002 RJMP 0x005F
0005D 5F4F SUBI R20,0xFF
0005E 4F5F SBCI R21,0xFF
0005F 154A CP R20,R10
00060 055B CPC R21,R11
00061 F3D8 BCS 0x005D
00062 940C 00C3 JMP pop_xgset300C
_Delayms:
i --> R20
j --> R22
MS --> R16
00064 940E 00C8 CALL push_xgsetF000
(0032) }
(0033) /*******************************************
(0034) 函数名称: Delayms
(0035) 功 能: 延时指定毫秒(8M晶振)
(0036) 参 数: MS--延时的毫秒数
(0037) 返回值 : 无
(0038) /********************************************/
(0039) void Delayms(uint MS)
(0040) {
(0041) uint i,j;
(0042) for( i=0;i<MS;i++)
00066 2744 CLR R20
00067 2755 CLR R21
00068 C00B RJMP 0x0074
(0043) for(j=0;j<1141;j++); //1141是在8MHz晶振下,通过软件仿真反复实验得到的数值
00069 2766 CLR R22
0006A 2777 CLR R23
0006B C002 RJMP 0x006E
0006C 5F6F SUBI R22,0xFF
0006D 4F7F SBCI R23,0xFF
0006E 3765 CPI R22,0x75
0006F E0E4 LDI R30,4
00070 077E CPC R23,R30
00071 F3D0 BCS 0x006C
00072 5F4F SUBI R20,0xFF
00073 4F5F SBCI R21,0xFF
00074 1740 CP R20,R16
00075 0751 CPC R21,R17
00076 F390 BCS 0x0069
00077 940C 00CD JMP pop_xgsetF000
(0044) }
(0045) /*******************************************
(0046) 函数名称: Board_init
(0047) 功 能: 初始化实验板,关闭全部功能
(0048) 参 数: 无
(0049) 返回值 : 无
(0050) /********************************************/
(0051) void Board_init(void)
(0052) {
(0053) DDRA=0xFF; //将四个IO口全部配置为输出
_Board_init:
00079 EF8F LDI R24,0xFF
0007A BB8A OUT 0x1A,R24
(0054) DDRB=0xFF;
0007B BB87 OUT 0x17,R24
(0055) DDRC=0xFF;
0007C BB84 OUT 0x14,R24
(0056) DDRD=0xFF;
0007D BB81 OUT 0x11,R24
(0057)
(0058) SPCR=0x00; //还原SPI口,使其为正常端口
0007E 2422 CLR R2
0007F B82D OUT 0x0D,R2
(0059)
(0060) PORTA|=BIT(PA6);//(BEEP)关闭蜂鸣器
00080 9ADE SBI 0x1B,6
(0061) PORTC&=~BIT(PC6); //(RELAY)初始化继电器为常闭连接状态
00081 98AE CBI 0x15,6
(0062) PORTA&=~BIT(PA1); //关闭SPI总线DA
00082 98D9 CBI 0x1B,1
(0063) PORTB=0xFF; //关闭LED
00083 BB88 OUT 0x18,R24
(0064) PORTA|=BIT(LEDLK); //锁存数据,使LED熄灭
00084 9ADA SBI 0x1B,2
(0065) Delayus(5);
00085 E005 LDI R16,5
00086 E010 LDI R17,0
00087 DFC5 RCALL _Delayus
(0066) PORTA&=~BIT(LEDLK);
00088 98DA CBI 0x1B,2
(0067)
(0068) PORTB=0x00; //输出段选
00089 2422 CLR R2
0008A BA28 OUT 0x18,R2
(0069) PORTA|=BIT(SEGLK);
0008B 9ADB SBI 0x1B,3
(0070) Delayus(50);
0008C E302 LDI R16,0x32
0008D E010 LDI R17,0
0008E DFBE RCALL _Delayus
(0071) PORTA&=~BIT(SEGLK);
0008F 98DB CBI 0x1B,3
(0072)
(0073) PORTB=0xFF; //输出位选
00090 EF8F LDI R24,0xFF
00091 BB88 OUT 0x18,R24
(0074) PORTA|=BIT(BITLK);
00092 9ADC SBI 0x1B,4
(0075) Delayus(50);
00093 E302 LDI R16,0x32
00094 E010 LDI R17,0
00095 DFB7 RCALL _Delayus
(0076) PORTA&=~BIT(BITLK);
00096 98DC CBI 0x1B,4
(0077)
(0078) PORTD=0xFF;
00097 EF8F LDI R24,0xFF
00098 BB82 OUT 0x12,R24
(0079) PORTA|=BIT(PA7);
00099 9ADF SBI 0x1B,7
(0080) Delayus(50);
0009A E302 LDI R16,0x32
0009B E010 LDI R17,0
0009C DFB0 RCALL _Delayus
(0081) PORTA&=~BIT(PA7);
0009D 98DF CBI 0x1B,7
0009E 9508 RET
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开发板上的1个LED灯
(0007) #include "iom16v.h"
(0008) #include "macros.h"
(0009) #include <HJ-1G_AVR.H> //包含自定义常量头文件
(0010) void main()
(0011) {
(0012) //DDRA=DDRA|BIT(2); //PA2为输出状态
(0013) //PORTA=PORTA|BIT(2); //PA2输出高电平
(0014)
(0015) DDRB=0xff; //PB0~7为输出状态
_main:
0009F EF8F LDI R24,0xFF
000A0 BB87 OUT 0x17,R24
000A1 C00A RJMP 0x00AC
(0016)
(0017) while(1) //程式停止。
(0018) {
(0019) PORTB=0xfe; //PB0为输出低电平,而其余为高电平,亦即打亮LED0
000A2 EF8E LDI R24,0xFE
000A3 BB88 OUT 0x18,R24
(0020) //PORTB&=~BIT(0) //等价
(0021) Delayms(50);
000A4 E302 LDI R16,0x32
000A5 E010 LDI R17,0
000A6 DFBD RCALL _Delayms
(0022) PORTB=0xff;
000A7 EF8F LDI R24,0xFF
000A8 BB88 OUT 0x18,R24
(0023) Delayms(50);
FILE: <library>
000A9 E302 LDI R16,0x32
000AA E010 LDI R17,0
000AB DFB8 RCALL _Delayms
000AC CFF5 RJMP 0x00A2
000AD 9508 RET
empy16s:
000AE 920A ST -Y,R0
000AF 921A ST -Y,R1
000B0 938A ST -Y,R24
000B1 939A ST -Y,R25
000B2 9F02 MUL R16,R18
000B3 01C0 MOVW R24,R0
000B4 9F12 MUL R17,R18
000B5 0D90 ADD R25,R0
000B6 9F03 MUL R16,R19
000B7 0D90 ADD R25,R0
000B8 018C MOVW R16,R24
000B9 9199 LD R25,Y+
000BA 9189 LD R24,Y+
000BB 9019 LD R1,Y+
000BC 9009 LD R0,Y+
000BD 9508 RET
push_xgset300C:
000BE 935A ST -Y,R21
000BF 934A ST -Y,R20
000C0 92BA ST -Y,R11
000C1 92AA ST -Y,R10
000C2 9508 RET
pop_xgset300C:
000C3 90A9 LD R10,Y+
000C4 90B9 LD R11,Y+
000C5 9149 LD R20,Y+
000C6 9159 LD R21,Y+
000C7 9508 RET
push_xgsetF000:
000C8 937A ST -Y,R23
000C9 936A ST -Y,R22
000CA 935A ST -Y,R21
000CB 934A ST -Y,R20
000CC 9508 RET
pop_xgsetF000:
000CD 9149 LD R20,Y+
000CE 9159 LD R21,Y+
000CF 9169 LD R22,Y+
000D0 9179 LD R23,Y+
000D1 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -