test_usart.lis

来自「ad7135的avr16的源程序」· LIS 代码 · 共 529 行 · 第 1/2 页

LIS
529
字号
                        .module test_usart.c
                        .area text(rom, con, rel)
 0000                   .dbfile test_usart.c
 0000                   .dbfunc e DELAY_1MS _DELAY_1MS fV
 0000           ;              i -> R16,R17
                        .even
 0000           _DELAY_1MS::
 0000                   .dbline -1
 0000                   .dbline 25
 0000           ; //************************************************* 
 0000           ; //测试功能:下位机往上位机发送数据
 0000           ; //测试方法:串口调试助手
 0000           ; //测试结果:OK
 0000           ; //时钟频率:外部8m
 0000           ; //管脚分配:
 0000           ; //注意事项: 
 0000           ; //完成时间:2009.03.15 
 0000           ; //**************************************************
 0000           ; 
 0000           ; //************************************************** 
 0000           ; //头文件
 0000           ; //************************************************** 
 0000           ; #include <iom16v.h>
 0000           ; #include <macros.h>
 0000           ; //**************************************************
 0000           ; 
 0000           ;  
 0000           ; //********************************************************** 
 0000           ; //函数名称:void DELAY_1MS(void)
 0000           ; //函数功能:延时1ms
 0000           ; //注意事项:i=143*n-2
 0000           ; //********************************************************** 
 0000           ; void DELAY_1MS(void)
 0000           ; {    
 0000                   .dbline 27
 0000           ;        unsigned int i;
 0000           ;        for(i=1142;i>0;i--)    
 0000 06E7              ldi R16,1142
 0002 14E0              ldi R17,4
 0004 02C0              xjmp L5
 0006           L2:
 0006                   .dbline 28
 0006           L3:
 0006                   .dbline 27
 0006 0150              subi R16,1
 0008 1040              sbci R17,0
 000A           L5:
 000A                   .dbline 27
 000A 0030              cpi R16,0
 000C 0107              cpc R16,R17
 000E D9F7              brne L2
 0010           X0:
 0010                   .dbline -2
 0010           L1:
 0010                   .dbline 0 ; func end
 0010 0895              ret
 0012                   .dbsym r i 16 i
 0012                   .dbend
 0012                   .dbfunc e DELAY_NMS _DELAY_NMS fV
 0012           ;              n -> R20,R21
                        .even
 0012           _DELAY_NMS::
 0012 0E940000          xcall push_gset1
 0016 A801              movw R20,R16
 0018                   .dbline -1
 0018                   .dbline 36
 0018           ;      ;
 0018           ; }
 0018           ; //********************************************************** 
 0018           ; //函数名称:void DELAY_1MS(void)
 0018           ; //函数功能:延时1ms
 0018           ; //注意事项:i=143*n-2
 0018           ; //********************************************************** 
 0018           ; void DELAY_NMS(unsigned int n)
 0018           ; {      
 0018                   .dbline 37
 0018           ;        for(;n>0;n--)
 0018 03C0              xjmp L10
 001A           L7:
 001A                   .dbline 38
 001A F2DF              xcall _DELAY_1MS
 001C           L8:
 001C                   .dbline 37
 001C 4150              subi R20,1
 001E 5040              sbci R21,0
 0020           L10:
 0020                   .dbline 37
 0020 4030              cpi R20,0
 0022 4507              cpc R20,R21
 0024 D1F7              brne L7
 0026           X1:
 0026                   .dbline -2
 0026           L6:
 0026 0E940000          xcall pop_gset1
 002A                   .dbline 0 ; func end
 002A 0895              ret
 002C                   .dbsym r n 20 i
 002C                   .dbend
 002C                   .dbfunc e USART_INIT _USART_INIT fV
                        .even
 002C           _USART_INIT::
 002C                   .dbline -1
 002C                   .dbline 46
 002C           ;             DELAY_1MS();
 002C           ; }
 002C           ; //***************************************************** 
 002C           ; //函数名称:void USART_INIT(void) 
 002C           ; //函数功能:8M,波特率9600
 002C           ; //注意事项:
 002C           ; //*****************************************************
 002C           ; void USART_INIT(void)
 002C           ; {      
 002C                   .dbline 47
 002C           ;        UBRR=0X33;//fosc=8mhz,波特率9600
 002C 83E3              ldi R24,51
 002E 89B9              out 0x9,R24
 0030                   .dbline 48
 0030           ;        UCSRA=0X20;
 0030 80E2              ldi R24,32
 0032 8BB9              out 0xb,R24
 0034                   .dbline 49
 0034           ;        UCSRC=0X86;
 0034 86E8              ldi R24,134
 0036 80BD              out 0x20,R24
 0038                   .dbline 50
 0038           ;        UCSRB=0X98;
 0038 88E9              ldi R24,152
 003A 8AB9              out 0xa,R24
 003C                   .dbline -2
 003C           L11:
 003C                   .dbline 0 ; func end
 003C 0895              ret
 003E                   .dbend
 003E                   .dbfunc e USART_TX _USART_TX fV
 003E           ;           data -> R20
                        .even
 003E           _USART_TX::
 003E 0E940000          xcall push_gset1
 0042 402F              mov R20,R16
 0044                   .dbline -1
 0044                   .dbline 58
 0044           ; }
 0044           ; //***************************************************** 
 0044           ; //函数名称:void USART_INIT(void) 
 0044           ; //函数功能:8M,波特率9600
 0044           ; //注意事项:
 0044           ; //*****************************************************
 0044           ; void USART_TX(unsigned char data)
 0044           ; {      
 0044                   .dbline 59
 0044           ;        UDR=data;
 0044 4CB9              out 0xc,R20
 0046           L13:
 0046                   .dbline 61
 0046           L14:
 0046                   .dbline 60
 0046           ;        while(!(UCSRA&(1<<TXC)))
 0046 5E9B              sbis 0xb,6
 0048 FECF              rjmp L13
 004A                   .dbline 62
 004A           ;        ;
 004A           ;        DELAY_NMS(1);
 004A 01E0              ldi R16,1
 004C 10E0              ldi R17,0
 004E E1DF              xcall _DELAY_NMS
 0050                   .dbline -2
 0050           L12:
 0050 0E940000          xcall pop_gset1
 0054                   .dbline 0 ; func end
 0054 0895              ret
 0056                   .dbsym r data 20 c
 0056                   .dbend
 0056                   .dbfunc e DATA_DISPLAY _DATA_DISPLAY fV
 0056           ;           temp -> y+0
 0056           ;              i -> R10
 0056           ;           data -> y+16
                        .even
 0056           _DATA_DISPLAY::
 0056 0E940000          xcall push_arg4
 005A 0E940000          xcall push_gset3
 005E 2A97              sbiw R28,10
 0060                   .dbline -1
 0060                   .dbline 70
 0060           ; }
 0060           ; //***************************************************** 
 0060           ; //函数名称:void USART_INIT(void) 
 0060           ; //函数功能:8M,波特率9600
 0060           ; //注意事项:
 0060           ; //*****************************************************
 0060           ; void DATA_DISPLAY(unsigned long int data)
 0060           ; {      
 0060                   .dbline 72
 0060           ;        unsigned char temp[10],i;
 0060           ;        temp[0]=(data/1000000000);
 0060 40E0              ldi R20,0
 0062 5AEC              ldi R21,202
 0064 6AE9              ldi R22,154
 0066 7BE3              ldi R23,59
 0068 FE01              movw R30,R28
 006A 2088              ldd R2,z+16
 006C 3188              ldd R3,z+17
 006E 4288              ldd R4,z+18
 0070 5388              ldd R5,z+19
 0072 7A93              st -y,R23
 0074 6A93              st -y,R22
 0076 5A93              st -y,R21
 0078 4A93              st -y,R20
 007A 8101              movw R16,R2
 007C 9201              movw R18,R4
 007E 0E940000          xcall div32u
 0082 0883              std y+0,R16
 0084                   .dbline 73
 0084           ;        temp[1]=(data/100000000)%10;
 0084 40E0              ldi R20,0
 0086 51EE              ldi R21,225
 0088 65EF              ldi R22,245
 008A 75E0              ldi R23,5
 008C FE01              movw R30,R28
 008E 2088              ldd R2,z+16
 0090 3188              ldd R3,z+17
 0092 4288              ldd R4,z+18
 0094 5388              ldd R5,z+19
 0096 7A93              st -y,R23
 0098 6A93              st -y,R22
 009A 5A93              st -y,R21
 009C 4A93              st -y,R20
 009E 8101              movw R16,R2
 00A0 9201              movw R18,R4
 00A2 0E940000          xcall div32u
 00A6 4AE0              ldi R20,10
 00A8 50E0              ldi R21,0
 00AA 60E0              ldi R22,0
 00AC 70E0              ldi R23,0
 00AE 7A93              st -y,R23
 00B0 6A93              st -y,R22
 00B2 5A93              st -y,R21
 00B4 4A93              st -y,R20
 00B6 0E940000          xcall mod32u
 00BA 0983              std y+1,R16
 00BC                   .dbline 74
 00BC           ;        temp[2]=(data/10000000)%10;
 00BC 40E8              ldi R20,128
 00BE 56E9              ldi R21,150
 00C0 68E9              ldi R22,152
 00C2 70E0              ldi R23,0
 00C4 FE01              movw R30,R28
 00C6 2088              ldd R2,z+16
 00C8 3188              ldd R3,z+17
 00CA 4288              ldd R4,z+18
 00CC 5388              ldd R5,z+19
 00CE 7A93              st -y,R23
 00D0 6A93              st -y,R22
 00D2 5A93              st -y,R21
 00D4 4A93              st -y,R20
 00D6 8101              movw R16,R2
 00D8 9201              movw R18,R4
 00DA 0E940000          xcall div32u
 00DE 4AE0              ldi R20,10
 00E0 50E0              ldi R21,0
 00E2 60E0              ldi R22,0
 00E4 70E0              ldi R23,0
 00E6 7A93              st -y,R23
 00E8 6A93              st -y,R22
 00EA 5A93              st -y,R21
 00EC 4A93              st -y,R20

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?