📄 蜂鸣器继电器.lst
字号:
__text_start:
__start:
002A E5CF LDI R28,0x5F
002B E0D4 LDI R29,4
002C BFCD OUT 0x3D,R28
002D BFDE OUT 0x3E,R29
002E 51C0 SUBI R28,0x10
002F 40D0 SBCI R29,0
0030 EA0A LDI R16,0xAA
0031 8308 STD Y+0,R16
0032 2400 CLR R0
0033 E6E0 LDI R30,0x60
0034 E0F0 LDI R31,0
0035 E010 LDI R17,0
0036 36E0 CPI R30,0x60
0037 07F1 CPC R31,R17
0038 F011 BEQ 0x003B
0039 9201 ST R0,Z+
003A CFFB RJMP 0x0036
003B 8300 STD Z+0,R16
003C E5E4 LDI R30,0x54
003D E0F0 LDI R31,0
003E E6A0 LDI R26,0x60
003F E0B0 LDI R27,0
0040 E010 LDI R17,0
0041 35E4 CPI R30,0x54
0042 07F1 CPC R31,R17
0043 F021 BEQ 0x0048
0044 95C8 LPM
0045 9631 ADIW R30,1
0046 920D ST R0,X+
0047 CFF9 RJMP 0x0041
0048 940E007D CALL _main
_exit:
004A CFFF RJMP _exit
FILE: C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\蜂鸣器继电器\delay.h
(0001) #define xtal 8 //1MS
(0002) /************************************************************
(0003) * 函数名称:void DelayUS(unsigned int time)
(0004) * 功 能:软件延时1.1Us
(0005) * 入口参数:time 延时时间
(0006) * 出口参数:无
(0007) ************************************************************/
(0008) void DelayUS(unsigned int time)
(0009) {
_DelayUS:
time --> R16
004B C002 RJMP 0x004E
(0010) while(time>1)
(0011) time--;
004C 5001 SUBI R16,1
004D 4010 SBCI R17,0
004E E081 LDI R24,1
004F E090 LDI R25,0
0050 1780 CP R24,R16
0051 0791 CPC R25,R17
0052 F3C8 BCS 0x004C
0053 9508 RET
_DelayMS:
i --> R20
time --> R16
0054 940E0090 CALL push_gset1
(0012) }
(0013) /************************************************************
(0014) * 函数名称:void DelayMS(unsigned int time)
(0015) * 功 能:软件延时 1/1000s
(0016) * 入口参数:time 延时时间 MS
(0017) * 出口参数:无
(0018) ************************************************************/
(0019) void DelayMS (unsigned int time)
(0020) {
0056 C009 RJMP 0x0060
(0021) unsigned int i;
(0022) while(time--)
(0023) {
(0024) for(i=1;i<(unsigned int)(xtal*143-2);i++)
0057 E041 LDI R20,1
0058 E050 LDI R21,0
0059 C002 RJMP 0x005C
005A 5F4F SUBI R20,0xFF
005B 4F5F SBCI R21,0xFF
005C 3746 CPI R20,0x76
005D E0E4 LDI R30,4
005E 075E CPC R21,R30
005F F3D0 BCS 0x005A
0060 0118 MOVW R2,R16
0061 5001 SUBI R16,1
0062 4010 SBCI R17,0
0063 2022 TST R2
0064 F791 BNE 0x0057
0065 2033 TST R3
0066 F781 BNE 0x0057
0067 940E0093 CALL pop_gset1
0069 9508 RET
FILE: C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\蜂鸣器继电器\蜂鸣器继电器.c
(0001) //内部晶振 8M
(0002) //包含所需头文件
(0003) #include <ioM16v.h>
(0004) #include <macros.h>
(0005) #include "delay.h"
(0006)
(0007)
(0008)
(0009) /*------宏定义------*/
(0010) #define uchar unsigned char
(0011) #define uint unsigned int
(0012)
(0013)
(0014)
(0015) //端口初始化
(0016) void port_init(void)
(0017) {
(0018) PORTA = 0x00;//A口数据置0
_port_init:
006A 2422 CLR R2
006B BA2B OUT 0x1B,R2
(0019) DDRA = 0xFF;//A口设为输出
006C EF8F LDI R24,0xFF
006D BB8A OUT 0x1A,R24
(0020) PORTB = 0x00;//B口数据置1
006E BA28 OUT 0x18,R2
(0021) DDRB = 0x00;//B口设为输入
006F BA27 OUT 0x17,R2
(0022) PORTC = 0x00;
0070 BA25 OUT 0x15,R2
(0023) DDRC = 0x00;
0071 BA24 OUT 0x14,R2
(0024) PORTD = 0x00;
0072 BA22 OUT 0x12,R2
(0025) DDRD = 0x00;
0073 BA21 OUT 0x11,R2
0074 9508 RET
(0026) }
(0027)
(0028)
(0029) void init_devices(void)
(0030) {
(0031) CLI(); //禁止所有中断
_init_devices:
0075 94F8 BCLR 7
(0032) MCUCR = 0x00;//INT0、INT1中断触发方式
0076 2422 CLR R2
0077 BE25 OUT 0x35,R2
(0033) MCUCSR = 0x80;//禁止JTAG
0078 E880 LDI R24,0x80
0079 BF84 OUT 0x34,R24
(0034) GICR = 0x00;//外部中断使能
007A BE2B OUT 0x3B,R2
(0035) port_init();
007B DFEE RCALL _port_init
007C 9508 RET
(0036) //SEI();//开全局中断
(0037) }
(0038) //主函数
(0039) void main(void)
(0040) {
(0041) init_devices();//调用初始函数
_main:
007D DFF7 RCALL _init_devices
007E C007 RJMP 0x0086
(0042) while(1)
(0043) {
(0044) PORTA^=BIT(PA0);//PA0每次取反
007F E081 LDI R24,1
0080 B22B IN R2,0x1B
0081 2628 EOR R2,R24
0082 BA2B OUT 0x1B,R2
(0045) DelayMS(3000);
FILE: <library>
0083 EB08 LDI R16,0xB8
0084 E01B LDI R17,0xB
0085 DFCE RCALL _DelayMS
0086 CFF8 RJMP 0x007F
0087 9508 RET
push_gset5:
0088 92FA ST R15,-Y
0089 92EA ST R14,-Y
push_gset4:
008A 92DA ST R13,-Y
008B 92CA ST R12,-Y
push_gset3:
008C 92BA ST R11,-Y
008D 92AA ST R10,-Y
push_gset2:
008E 937A ST R23,-Y
008F 936A ST R22,-Y
push_gset1:
0090 935A ST R21,-Y
0091 934A ST R20,-Y
0092 9508 RET
pop_gset1:
0093 E0E1 LDI R30,1
pop:
0094 9149 LD R20,Y+
0095 9159 LD R21,Y+
0096 FDE0 SBRC R30,0
0097 9508 RET
0098 9169 LD R22,Y+
0099 9179 LD R23,Y+
009A FDE1 SBRC R30,1
009B 9508 RET
009C 90A9 LD R10,Y+
009D 90B9 LD R11,Y+
009E FDE2 SBRC R30,2
009F 9508 RET
00A0 90C9 LD R12,Y+
00A1 90D9 LD R13,Y+
00A2 FDE3 SBRC R30,3
00A3 9508 RET
00A4 90E9 LD R14,Y+
00A5 90F9 LD R15,Y+
00A6 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -