📄 test_usart.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 940E0194 CALL _main
_exit:
004A CFFF RJMP _exit
FILE: test_usart.c
(0001) //*************************************************
(0002) //测试功能:下位机往上位机发送数据
(0003) //测试方法:串口调试助手
(0004) //测试结果:OK
(0005) //时钟频率:外部8m
(0006) //管脚分配:
(0007) //注意事项:
(0008) //完成时间:2009.03.15
(0009) //**************************************************
(0010)
(0011) //**************************************************
(0012) //头文件
(0013) //**************************************************
(0014) #include <iom16v.h>
(0015) #include <macros.h>
(0016) //**************************************************
(0017)
(0018)
(0019) //**********************************************************
(0020) //函数名称:void DELAY_1MS(void)
(0021) //函数功能:延时1ms
(0022) //注意事项:i=143*n-2
(0023) //**********************************************************
(0024) void DELAY_1MS(void)
(0025) {
(0026) unsigned int i;
(0027) for(i=1142;i>0;i--)
_DELAY_1MS:
i --> R16
004B E706 LDI R16,0x76
004C E014 LDI R17,4
004D C002 RJMP 0x0050
004E 5001 SUBI R16,1
004F 4010 SBCI R17,0
0050 3000 CPI R16,0
0051 0701 CPC R16,R17
0052 F7D9 BNE 0x004E
0053 9508 RET
_DELAY_NMS:
n --> R20
0054 940E021D CALL push_gset1
0056 01A8 MOVW R20,R16
(0028) ;
(0029) }
(0030) //**********************************************************
(0031) //函数名称:void DELAY_1MS(void)
(0032) //函数功能:延时1ms
(0033) //注意事项:i=143*n-2
(0034) //**********************************************************
(0035) void DELAY_NMS(unsigned int n)
(0036) {
(0037) for(;n>0;n--)
0057 C003 RJMP 0x005B
(0038) DELAY_1MS();
0058 DFF2 RCALL _DELAY_1MS
0059 5041 SUBI R20,1
005A 4050 SBCI R21,0
005B 3040 CPI R20,0
005C 0745 CPC R20,R21
005D F7D1 BNE 0x0058
005E 940E0220 CALL pop_gset1
0060 9508 RET
(0039) }
(0040) //*****************************************************
(0041) //函数名称:void USART_INIT(void)
(0042) //函数功能:8M,波特率9600
(0043) //注意事项:
(0044) //*****************************************************
(0045) void USART_INIT(void)
(0046) {
(0047) UBRR=0X33;//fosc=8mhz,波特率9600
_USART_INIT:
0061 E383 LDI R24,0x33
0062 B989 OUT 0x09,R24
(0048) UCSRA=0X20;
0063 E280 LDI R24,0x20
0064 B98B OUT 0x0B,R24
(0049) UCSRC=0X86;
0065 E886 LDI R24,0x86
0066 BD80 OUT 0x20,R24
(0050) UCSRB=0X98;
0067 E988 LDI R24,0x98
0068 B98A OUT 0x0A,R24
0069 9508 RET
_USART_TX:
data --> R20
006A 940E021D CALL push_gset1
006C 2F40 MOV R20,R16
(0051) }
(0052) //*****************************************************
(0053) //函数名称:void USART_INIT(void)
(0054) //函数功能:8M,波特率9600
(0055) //注意事项:
(0056) //*****************************************************
(0057) void USART_TX(unsigned char data)
(0058) {
(0059) UDR=data;
006D B94C OUT 0x0C,R20
(0060) while(!(UCSRA&(1<<TXC)))
006E 9B5E SBIS 0x0B,6
006F CFFE RJMP 0x006E
(0061) ;
(0062) DELAY_NMS(1);
0070 E001 LDI R16,1
0071 E010 LDI R17,0
0072 DFE1 RCALL _DELAY_NMS
0073 940E0220 CALL pop_gset1
0075 9508 RET
_DATA_DISPLAY:
temp --> Y+0
i --> R10
data --> Y+16
0076 940E019C CALL push_arg4
0078 940E0219 CALL push_gset3
007A 972A SBIW R28,0xA
(0063) }
(0064) //*****************************************************
(0065) //函数名称:void USART_INIT(void)
(0066) //函数功能:8M,波特率9600
(0067) //注意事项:
(0068) //*****************************************************
(0069) void DATA_DISPLAY(unsigned long int data)
(0070) {
(0071) unsigned char temp[10],i;
(0072) temp[0]=(data/1000000000);
007B E040 LDI R20,0
007C EC5A LDI R21,0xCA
007D E96A LDI R22,0x9A
007E E37B LDI R23,0x3B
007F 01FE MOVW R30,R28
0080 8820 LDD R2,Z+16
0081 8831 LDD R3,Z+17
0082 8842 LDD R4,Z+18
0083 8853 LDD R5,Z+19
0084 937A ST R23,-Y
0085 936A ST R22,-Y
0086 935A ST R21,-Y
0087 934A ST R20,-Y
0088 0181 MOVW R16,R2
0089 0192 MOVW R18,R4
008A 940E01A1 CALL div32u
008C 8308 STD Y+0,R16
(0073) temp[1]=(data/100000000)%10;
008D E040 LDI R20,0
008E EE51 LDI R21,0xE1
008F EF65 LDI R22,0xF5
0090 E075 LDI R23,5
0091 01FE MOVW R30,R28
0092 8820 LDD R2,Z+16
0093 8831 LDD R3,Z+17
0094 8842 LDD R4,Z+18
0095 8853 LDD R5,Z+19
0096 937A ST R23,-Y
0097 936A ST R22,-Y
0098 935A ST R21,-Y
0099 934A ST R20,-Y
009A 0181 MOVW R16,R2
009B 0192 MOVW R18,R4
009C 940E01A1 CALL div32u
009E E04A LDI R20,0xA
009F E050 LDI R21,0
00A0 E060 LDI R22,0
00A1 E070 LDI R23,0
00A2 937A ST R23,-Y
00A3 936A ST R22,-Y
00A4 935A ST R21,-Y
00A5 934A ST R20,-Y
00A6 940E01A3 CALL mod32u
00A8 8309 STD Y+1,R16
(0074) temp[2]=(data/10000000)%10;
00A9 E840 LDI R20,0x80
00AA E956 LDI R21,0x96
00AB E968 LDI R22,0x98
00AC E070 LDI R23,0
00AD 01FE MOVW R30,R28
00AE 8820 LDD R2,Z+16
00AF 8831 LDD R3,Z+17
00B0 8842 LDD R4,Z+18
00B1 8853 LDD R5,Z+19
00B2 937A ST R23,-Y
00B3 936A ST R22,-Y
00B4 935A ST R21,-Y
00B5 934A ST R20,-Y
00B6 0181 MOVW R16,R2
00B7 0192 MOVW R18,R4
00B8 940E01A1 CALL div32u
00BA E04A LDI R20,0xA
00BB E050 LDI R21,0
00BC E060 LDI R22,0
00BD E070 LDI R23,0
00BE 937A ST R23,-Y
00BF 936A ST R22,-Y
00C0 935A ST R21,-Y
00C1 934A ST R20,-Y
00C2 940E01A3 CALL mod32u
00C4 830A STD Y+2,R16
(0075) temp[3]=(data/1000000)%10;
00C5 E440 LDI R20,0x40
00C6 E452 LDI R21,0x42
00C7 E06F LDI R22,0xF
00C8 E070 LDI R23,0
00C9 01FE MOVW R30,R28
00CA 8820 LDD R2,Z+16
00CB 8831 LDD R3,Z+17
00CC 8842 LDD R4,Z+18
00CD 8853 LDD R5,Z+19
00CE 937A ST R23,-Y
00CF 936A ST R22,-Y
00D0 935A ST R21,-Y
00D1 934A ST R20,-Y
00D2 0181 MOVW R16,R2
00D3 0192 MOVW R18,R4
00D4 940E01A1 CALL div32u
00D6 E04A LDI R20,0xA
00D7 E050 LDI R21,0
00D8 E060 LDI R22,0
00D9 E070 LDI R23,0
00DA 937A ST R23,-Y
00DB 936A ST R22,-Y
00DC 935A ST R21,-Y
00DD 934A ST R20,-Y
00DE 940E01A3 CALL mod32u
00E0 830B STD Y+3,R16
(0076) temp[4]=(data/100000)%10;
00E1 EA40 LDI R20,0xA0
00E2 E856 LDI R21,0x86
00E3 E061 LDI R22,1
00E4 E070 LDI R23,0
00E5 01FE MOVW R30,R28
00E6 8820 LDD R2,Z+16
00E7 8831 LDD R3,Z+17
00E8 8842 LDD R4,Z+18
00E9 8853 LDD R5,Z+19
00EA 937A ST R23,-Y
00EB 936A ST R22,-Y
00EC 935A ST R21,-Y
00ED 934A ST R20,-Y
00EE 0181 MOVW R16,R2
00EF 0192 MOVW R18,R4
00F0 940E01A1 CALL div32u
00F2 E04A LDI R20,0xA
00F3 E050 LDI R21,0
00F4 E060 LDI R22,0
00F5 E070 LDI R23,0
00F6 937A ST R23,-Y
00F7 936A ST R22,-Y
00F8 935A ST R21,-Y
00F9 934A ST R20,-Y
00FA 940E01A3 CALL mod32u
00FC 830C STD Y+4,R16
(0077) temp[5]=(data/10000)%10;
00FD E140 LDI R20,0x10
00FE E257 LDI R21,0x27
00FF E060 LDI R22,0
0100 E070 LDI R23,0
0101 01FE MOVW R30,R28
0102 8820 LDD R2,Z+16
0103 8831 LDD R3,Z+17
0104 8842 LDD R4,Z+18
0105 8853 LDD R5,Z+19
0106 937A ST R23,-Y
0107 936A ST R22,-Y
0108 935A ST R21,-Y
0109 934A ST R20,-Y
010A 0181 MOVW R16,R2
010B 0192 MOVW R18,R4
010C 940E01A1 CALL div32u
010E E04A LDI R20,0xA
010F E050 LDI R21,0
0110 E060 LDI R22,0
0111 E070 LDI R23,0
0112 937A ST R23,-Y
0113 936A ST R22,-Y
0114 935A ST R21,-Y
0115 934A ST R20,-Y
0116 940E01A3 CALL mod32u
0118 830D STD Y+5,R16
(0078) temp[6]=(data/1000)%10;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -