📄 方波.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 940E0089 CALL _main
_exit:
004A CFFF RJMP _exit
FILE: C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\方波\delay.h
(0001) #define xtal 8 //8MS
(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 940E0096 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 940E0099 CALL pop_gset1
0069 9508 RET
FILE: C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\方波\方波.c
(0001) //外部晶振 8M
(0002) #include <ioM16v.h>
(0003) #include <macros.h>
(0004) #include "delay.h"
(0005)
(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;//设置端口方向、数据
_port_init:
006A 2422 CLR R2
006B BA2B OUT 0x1B,R2
(0019) DDRA = 0x00;
006C BA2A OUT 0x1A,R2
(0020) PORTB = 0x08;
006D E088 LDI R24,0x8
006E BB88 OUT 0x18,R24
(0021) DDRB = 0x08;
006F BB87 OUT 0x17,R24
(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) //定时器T0初始化
(0030) void timer0_init(void)
(0031) {
(0032) TCCR0 = 0x00;//停止定时器
_timer0_init:
0075 2422 CLR R2
0076 BE23 OUT 0x33,R2
(0033) TCNT0 = 0x00;//初始值
0077 BE22 OUT 0x32,R2
(0034) OCR0 = 0x7F;//匹配值
0078 E78F LDI R24,0x7F
0079 BF8C OUT 0x3C,R24
(0035) TIMSK |= 0x00;//中断允许
007A B629 IN R2,0x39
007B BE29 OUT 0x39,R2
(0036) TCCR0 = 0x6C;//启动定时器
007C E68C LDI R24,0x6C
007D BF83 OUT 0x33,R24
007E 9508 RET
(0037) }
(0038)
(0039)
(0040) void init_devices(void)
(0041) {
(0042) CLI(); //禁止所有中断
_init_devices:
007F 94F8 BCLR 7
(0043) MCUCR = 0x00;//INT0、INT1中断触发方式
0080 2422 CLR R2
0081 BE25 OUT 0x35,R2
(0044) MCUCSR = 0x80;//禁止JTAG
0082 E880 LDI R24,0x80
0083 BF84 OUT 0x34,R24
(0045) GICR = 0x00;//外部中断使能
0084 BE2B OUT 0x3B,R2
(0046) port_init();
0085 DFE4 RCALL _port_init
(0047) timer0_init();
0086 DFEE RCALL _timer0_init
(0048) SEI();//开全局中断
0087 9478 BSET 7
0088 9508 RET
(0049) }
(0050) //主函数
(0051) void main(void)
(0052) {
(0053) init_devices();
_main:
0089 DFF5 RCALL _init_devices
008A C001 RJMP 0x008C
(0054) //在这继续添加你的代码
(0055) while(1)
(0056) {
(0057) NOP();
FILE: <library>
008B 0000 NOP
008C CFFE RJMP 0x008B
008D 9508 RET
push_gset5:
008E 92FA ST R15,-Y
008F 92EA ST R14,-Y
push_gset4:
0090 92DA ST R13,-Y
0091 92CA ST R12,-Y
push_gset3:
0092 92BA ST R11,-Y
0093 92AA ST R10,-Y
push_gset2:
0094 937A ST R23,-Y
0095 936A ST R22,-Y
push_gset1:
0096 935A ST R21,-Y
0097 934A ST R20,-Y
0098 9508 RET
pop_gset1:
0099 E0E1 LDI R30,1
pop:
009A 9149 LD R20,Y+
009B 9159 LD R21,Y+
009C FDE0 SBRC R30,0
009D 9508 RET
009E 9169 LD R22,Y+
009F 9179 LD R23,Y+
00A0 FDE1 SBRC R30,1
00A1 9508 RET
00A2 90A9 LD R10,Y+
00A3 90B9 LD R11,Y+
00A4 FDE2 SBRC R30,2
00A5 9508 RET
00A6 90C9 LD R12,Y+
00A7 90D9 LD R13,Y+
00A8 FDE3 SBRC R30,3
00A9 9508 RET
00AA 90E9 LD R14,Y+
00AB 90F9 LD R15,Y+
00AC 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -