📄 example.lst
字号:
__start:
__text_start:
0032 E5CF LDI R28,0x5F
0033 E0D4 LDI R29,4
0034 BFCD OUT 0x3D,R28
0035 BFDE OUT 0x3E,R29
0036 51C0 SUBI R28,0x10
0037 40D0 SBCI R29,0
0038 EA0A LDI R16,0xAA
0039 8308 STD Y+0,R16
003A 2400 CLR R0
003B E6E0 LDI R30,0x60
003C E0F0 LDI R31,0
003D E010 LDI R17,0
003E 36E0 CPI R30,0x60
003F 07F1 CPC R31,R17
0040 F011 BEQ 0x0043
0041 9201 ST R0,Z+
0042 CFFB RJMP 0x003E
0043 8300 STD Z+0,R16
0044 E6E4 LDI R30,0x64
0045 E0F0 LDI R31,0
0046 E6A0 LDI R26,0x60
0047 E0B0 LDI R27,0
0048 E010 LDI R17,0
0049 36E4 CPI R30,0x64
004A 07F1 CPC R31,R17
004B F021 BEQ 0x0050
004C 95C8 LPM
004D 9631 ADIW R30,1
004E 920D ST R0,X+
004F CFF9 RJMP 0x0049
0050 940E0053 CALL _main
_exit:
0052 CFFF RJMP _exit
FILE: D:\当前项目\PROTEU~2\Proteus实例\第十章\10.8\MCU.c
(0001) #include <iom16v.h>
(0002) unsigned char const SEGtable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
(0003) //"0"~"F"对应的字形编码,共阳极八段数码管
(0004) main()
(0005) {
(0006) unsigned char i,j;
(0007) unsigned char counter=0; //指示当前显示的数字或者字符在表格中存放位置
_main:
counter --> R16
i --> R18
j --> R20
0053 2700 CLR R16
(0008) DDRD = 0xFF;
0054 EF8F LDI R24,0xFF
0055 BB81 OUT 0x11,R24
(0009) PORTD = 0xFF; //初始化PORTA
0056 BB82 OUT 0x12,R24
0057 C02B RJMP 0x0083
(0010) while(1)
(0011) {
(0012) for(i=0;i<250;i++) //软件延时
0058 2722 CLR R18
0059 C01A RJMP 0x0074
(0013) {
(0014) for(j=0;j<250;j++);
005A 2744 CLR R20
005B C001 RJMP 0x005D
005C 9543 INC R20
005D 3F4A CPI R20,0xFA
005E F3E8 BCS 0x005C
(0015) for(j=0;j<250;j++);
005F 2744 CLR R20
0060 C001 RJMP 0x0062
0061 9543 INC R20
0062 3F4A CPI R20,0xFA
0063 F3E8 BCS 0x0061
(0016) for(j=0;j<250;j++);
0064 2744 CLR R20
0065 C001 RJMP 0x0067
0066 9543 INC R20
0067 3F4A CPI R20,0xFA
0068 F3E8 BCS 0x0066
(0017) for(j=0;j<250;j++);
0069 2744 CLR R20
006A C001 RJMP 0x006C
006B 9543 INC R20
006C 3F4A CPI R20,0xFA
006D F3E8 BCS 0x006B
(0018) for(j=0;j<250;j++);
006E 2744 CLR R20
006F C001 RJMP 0x0071
0070 9543 INC R20
0071 3F4A CPI R20,0xFA
0072 F3E8 BCS 0x0070
0073 9523 INC R18
0074 3F2A CPI R18,0xFA
0075 F320 BCS 0x005A
(0019) }
(0020) if(counter>=15) //已经显示到F,回到0继续显示
0076 300F CPI R16,0xF
0077 F010 BCS 0x007A
(0021) {
(0022) counter = 0;
0078 2700 CLR R16
(0023) }
0079 C001 RJMP 0x007B
(0024) else
(0025) {
(0026) counter++; //数字字符增加
007A 9503 INC R16
(0027) }
(0028) PORTD = SEGtable[counter]; //输出字符
FILE: <library>
007B E584 LDI R24,0x54
007C E090 LDI R25,0
007D 2FE0 MOV R30,R16
007E 27FF CLR R31
007F 0FE8 ADD R30,R24
0080 1FF9 ADC R31,R25
0081 91E4 LPM R30,0(Z)
0082 BBE2 OUT 0x12,R30
0083 CFD4 RJMP 0x0058
0084 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -