📄 motor_ce.lst
字号:
(0026)
(0027) SEI();
010A 9478 BSET 7
(0028) while(1)
010B CFFF RJMP 0x010B
010C 9508 RET
FILE: C:\DOCUME~1\www\桌面\motor_ce\usart.c
(0001) #include "includes.h"
(0002) //-------------------------------------------------------------
(0003) //字符输出函数
(0004) void Usart_Tx(unsigned char data)
(0005) {
(0006) while (!(UCSRA&(1<<UDRE)));
_Usart_Tx:
data --> R16
010D 9B5D SBIS 0x0B,5
010E CFFE RJMP _Usart_Tx
(0007) UDR=data;
010F B90C OUT 0x0C,R16
0110 9508 RET
(0008) }
(0009) //字符输入函数
(0010) unsigned char Usart_Rx(void)
(0011) {
(0012) while(!(UCSRA& (1<<RXC)));
_Usart_Rx:
0111 9B5F SBIS 0x0B,7
0112 CFFE RJMP _Usart_Rx
(0013) return UDR;
0113 B10C IN R16,0x0C
0114 9508 RET
_Usart_Str_Tx:
s --> R20
0115 940E0180 CALL push_gset1
0117 01A8 MOVW R20,R16
(0014) }
(0015) //字符串输出函数
(0016) void Usart_Str_Tx(char *s)
(0017) {
0118 C005 RJMP 0x011E
(0018) while (*s)
(0019) {
(0020) Usart_Tx(*s);
0119 01FA MOVW R30,R20
011A 8100 LDD R16,Z+0
011B DFF1 RCALL _Usart_Tx
(0021) s++;
011C 5F4F SUBI R20,0xFF
011D 4F5F SBCI R21,0xFF
011E 01FA MOVW R30,R20
011F 8020 LDD R2,Z+0
0120 2022 TST R2
0121 F7B9 BNE 0x0119
(0022) }
(0023) Usart_Tx(0x0a);//回车换行
0122 E00A LDI R16,0xA
0123 DFE9 RCALL _Usart_Tx
(0024) Usart_Tx(0x0d);
0124 E00D LDI R16,0xD
0125 DFE7 RCALL _Usart_Tx
0126 940E0183 CALL pop_gset1
0128 9508 RET
(0025) }
(0026) //------------------------------------------------------
(0027) void Usart_Init(void)//9600,8,1,
(0028) {
(0029) UCSRB = 0x00; //disable while setting baud rate
_Usart_Init:
0129 2422 CLR R2
012A B82A OUT 0x0A,R2
(0030) UCSRA = 0x00;
012B B82B OUT 0x0B,R2
(0031) UCSRC = 0x86;
012C E886 LDI R24,0x86
012D BD80 OUT 0x20,R24
(0032) //UBRRL = 0x33; //set baud rate lo
(0033) //UBRRH = 0x00; //set baud rate hi
(0034) UBRRL = 0x0C; //set baud rate lo
012E E08C LDI R24,0xC
012F B989 OUT 0x09,R24
(0035) UBRRH = 0x00; //set baud rate hi,38400
0130 BC20 OUT 0x20,R2
(0036) UCSRB = 0x18;
0131 E188 LDI R24,0x18
0132 B98A OUT 0x0A,R24
0133 9508 RET
_Usart_Buffer_Tx:
i --> R20
Buffer --> R22
0134 940E0197 CALL push_gset2
0136 01B8 MOVW R22,R16
(0037) }
(0038) //----------------------------------------------------
(0039) void Usart_Buffer_Tx(unsigned char Buffer[Buffer_Length])
(0040) {
(0041) unsigned int i=0;
0137 2744 CLR R20
0138 2755 CLR R21
0139 C014 RJMP 0x014E
(0042) while(i<Buffer_Length)
(0043) {
(0044) Usart_Tx(i);
013A 2F04 MOV R16,R20
013B DFD1 RCALL _Usart_Tx
(0045) Usart_Tx(Buffer[i]);
013C 01FA MOVW R30,R20
013D 0FE6 ADD R30,R22
013E 1FF7 ADC R31,R23
013F 8100 LDD R16,Z+0
0140 DFCC RCALL _Usart_Tx
(0046) i++;
0141 5F4F SUBI R20,0xFF
0142 4F5F SBCI R21,0xFF
(0047) Usart_Tx(Buffer[i]);
0143 01FA MOVW R30,R20
0144 0FE6 ADD R30,R22
0145 1FF7 ADC R31,R23
0146 8100 LDD R16,Z+0
0147 DFC5 RCALL _Usart_Tx
(0048)
(0049) Usart_Tx(0x0a);//回车换行
0148 E00A LDI R16,0xA
0149 DFC3 RCALL _Usart_Tx
(0050) Usart_Tx(0x0d);
014A E00D LDI R16,0xD
014B DFC1 RCALL _Usart_Tx
(0051) i++;
FILE: <library>
014C 5F4F SUBI R20,0xFF
014D 4F5F SBCI R21,0xFF
014E 3644 CPI R20,0x64
014F E0E0 LDI R30,0
0150 075E CPC R21,R30
0151 F340 BCS 0x013A
0152 940E017D CALL pop_gset2
0154 9508 RET
mod8u:
0155 9468 BSET 6
0156 C001 RJMP xdiv8u
div8u:
0157 94E8 BCLR 6
xdiv8u:
0158 932A ST R18,-Y
0159 92FA ST R15,-Y
015A 92EA ST R14,-Y
015B 24FF CLR R15
015C 24EE CLR R14
015D E120 LDI R18,0x10
015E 0F00 LSL R16
015F 1CFF ROL R15
0160 1CEE ROL R14
0161 16E1 CP R14,R17
0162 F010 BCS 0x0165
0163 1AE1 SUB R14,R17
0164 9503 INC R16
0165 952A DEC R18
0166 F7B9 BNE 0x015E
0167 F40E BRTC 0x0169
0168 2D0E MOV R16,R14
0169 90E9 LD R14,Y+
016A 90F9 LD R15,Y+
016B 9129 LD R18,Y+
016C 9508 RET
empy16s:
016D 920A ST R0,-Y
016E 921A ST R1,-Y
016F 938A ST R24,-Y
0170 939A ST R25,-Y
0171 9F02 MUL R16,R18
0172 01C0 MOVW R24,R0
0173 9F12 MUL R17,R18
0174 0D90 ADD R25,R0
0175 9F03 MUL R16,R19
0176 0D90 ADD R25,R0
0177 018C MOVW R16,R24
0178 9199 LD R25,Y+
0179 9189 LD R24,Y+
017A 9019 LD R1,Y+
017B 9009 LD R0,Y+
017C 9508 RET
pop_gset2:
017D E0E2 LDI R30,2
017E 940C0184 JMP pop
push_gset1:
0180 935A ST R21,-Y
0181 934A ST R20,-Y
0182 9508 RET
pop_gset1:
0183 E0E1 LDI R30,1
pop:
0184 9149 LD R20,Y+
0185 9159 LD R21,Y+
0186 FDE0 SBRC R30,0
0187 9508 RET
0188 9169 LD R22,Y+
0189 9179 LD R23,Y+
018A FDE1 SBRC R30,1
018B 9508 RET
018C 90A9 LD R10,Y+
018D 90B9 LD R11,Y+
018E FDE2 SBRC R30,2
018F 9508 RET
0190 90C9 LD R12,Y+
0191 90D9 LD R13,Y+
0192 FDE3 SBRC R30,3
0193 9508 RET
0194 90E9 LD R14,Y+
0195 90F9 LD R15,Y+
0196 9508 RET
push_gset2:
0197 937A ST R23,-Y
0198 936A ST R22,-Y
0199 940C0180 JMP push_gset1
push_lset:
019B 93FA ST R31,-Y
019C 93EA ST R30,-Y
019D 93BA ST R27,-Y
019E 93AA ST R26,-Y
019F 939A ST R25,-Y
01A0 938A ST R24,-Y
01A1 933A ST R19,-Y
01A2 932A ST R18,-Y
01A3 931A ST R17,-Y
01A4 930A ST R16,-Y
01A5 929A ST R9,-Y
01A6 928A ST R8,-Y
01A7 927A ST R7,-Y
01A8 926A ST R6,-Y
01A9 925A ST R5,-Y
01AA 924A ST R4,-Y
01AB 923A ST R3,-Y
01AC 922A ST R2,-Y
01AD 921A ST R1,-Y
01AE 920A ST R0,-Y
01AF B60F IN R0,0x3F
01B0 920A ST R0,-Y
01B1 9508 RET
pop_lset:
01B2 9009 LD R0,Y+
01B3 BE0F OUT 0x3F,R0
01B4 9009 LD R0,Y+
01B5 9019 LD R1,Y+
01B6 9029 LD R2,Y+
01B7 9039 LD R3,Y+
01B8 9049 LD R4,Y+
01B9 9059 LD R5,Y+
01BA 9069 LD R6,Y+
01BB 9079 LD R7,Y+
01BC 9089 LD R8,Y+
01BD 9099 LD R9,Y+
01BE 9109 LD R16,Y+
01BF 9119 LD R17,Y+
01C0 9129 LD R18,Y+
01C1 9139 LD R19,Y+
01C2 9189 LD R24,Y+
01C3 9199 LD R25,Y+
01C4 91A9 LD R26,Y+
01C5 91B9 LD R27,Y+
01C6 91E9 LD R30,Y+
01C7 91F9 LD R31,Y+
01C8 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -