⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart.lis

📁 AtMega169芯片上的串口的C语言测试的程序
💻 LIS
字号:
                        .module uart.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\TDdownload\zxy\169demo\169UART\uart.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 16
 0000           ; // **************************************************************
 0000           ; // ***                         广 州 天 河 双 龙 电 子 公 司              ***
 0000           ; // ***                   http://www.sl.com.cn                 ***
 0000           ; // ***                  实验: UART                           ***
 0000           ; // ***                  作者:zxy@sl.com.cn                   ***
 0000           ; // ***                       2006年3月28日                    ***
 0000           ; // ***         目标MCU:MEGA169    晶振:内部(INT)8MHZ         ***
 0000           ; // **************************************************************
 0000           ; //本实验需相关软件配合如:comdebug.exe
 0000           ; #include <iom169v.h>
 0000           ; #include <macros.h>
 0000           ; #define fosc 8000000 
 0000           ; #define baud 19200    
 0000           ; 
 0000           ; void port_init()
 0000           ;            {
 0000                   .dbline 17
 0000           ;             PORTE=0xff;
 0000 8FEF              ldi R24,255
 0002 8EB9              out 0xe,R24
 0004                   .dbline 18
 0004           ;             DDRE=0xff;            
 0004 8DB9              out 0xd,R24
 0006                   .dbline -2
 0006           L1:
 0006                   .dbline 0 ; func end
 0006 0895              ret
 0008                   .dbend
 0008                   .dbfunc e uart1_init _uart1_init fV
                        .even
 0008           _uart1_init::
 0008                   .dbline -1
 0008                   .dbline 23
 0008           ;            }
 0008           ; 
 0008           ; //URAT的1口
 0008           ; void uart1_init(void)
 0008           ; {
 0008                   .dbline 24
 0008           ;  UCSR0B = 0x00; //设置波特率时关闭发送和接收
 0008 2224              clr R2
 000A 2092C100          sts 193,R2
 000E                   .dbline 25
 000E           ;  UCSR0A = 0x00;
 000E 2092C000          sts 192,R2
 0012                   .dbline 26
 0012           ;  UBRRL=(fosc/16/(baud+1))%256;
 0012 8AE1              ldi R24,26
 0014 8093C400          sts 196,R24
 0018                   .dbline 27
 0018           ;  UBRRH=(fosc/16/(baud+1))/256;//设置波特率
 0018 2092C500          sts 197,R2
 001C                   .dbline 28
 001C           ;  UCSR0C =(1<<UCSZ1)|(1<<UCSZ0);//8位数据+1位STOP位 
 001C 86E0              ldi R24,6
 001E 8093C200          sts 194,R24
 0022                   .dbline 29
 0022           ;  UCSR0B =(1<<RXEN)|(1<<TXEN);//允许发送和接收
 0022 88E1              ldi R24,24
 0024 8093C100          sts 193,R24
 0028                   .dbline -2
 0028           L2:
 0028                   .dbline 0 ; func end
 0028 0895              ret
 002A                   .dbend
 002A                   .dbfunc e putchar1 _putchar1 fV
 002A           ;              c -> R16
                        .even
 002A           _putchar1::
 002A                   .dbline -1
 002A                   .dbline 32
 002A           ; }
 002A           ; void putchar1(unsigned char c)
 002A           ;       {        
 002A           L4:
 002A                   .dbline 33
 002A           L5:
 002A                   .dbline 33
 002A           ;      while (!(UCSRA&(1<<UDRE0)));//判断上次发送是否完成
 002A 2090C000          lds R2,192
 002E 25FE              sbrs R2,5
 0030 FCCF              rjmp L4
 0032                   .dbline 34
 0032           ;          UDR0=c;                      //发送数据    
 0032 0093C600          sts 198,R16
 0036                   .dbline -2
 0036           L3:
 0036                   .dbline 0 ; func end
 0036 0895              ret
 0038                   .dbsym r c 16 c
 0038                   .dbend
 0038                   .dbfunc e getchar1 _getchar1 fc
                        .even
 0038           _getchar1::
 0038                   .dbline -1
 0038                   .dbline 37
 0038           ;       }       
 0038           ; unsigned char getchar1(void)
 0038           ;       {
 0038           L8:
 0038                   .dbline 38
 0038           L9:
 0038                   .dbline 38
 0038           ;           while(!(UCSRA&(1<<RXC0)));//判断是否接收到数据
 0038 2090C000          lds R2,192
 003C 27FE              sbrs R2,7
 003E FCCF              rjmp L8
 0040                   .dbline 39
 0040           ;        return UDR0;                //接收数据
 0040 0091C600          lds R16,198
 0044                   .dbline -2
 0044           L7:
 0044                   .dbline 0 ; func end
 0044 0895              ret
 0046                   .dbend
 0046                   .dbfunc e main _main fV
 0046           ;              i -> R20
                        .even
 0046           _main::
 0046                   .dbline -1
 0046                   .dbline 44
 0046           ;         }     
 0046           ; //URAT的1口
 0046           ; 
 0046           ; void main(void)
 0046           ; {
 0046                   .dbline 46
 0046           ;  unsigned char i;
 0046           ;  port_init();
 0046 DCDF              xcall _port_init
 0048                   .dbline 47
 0048           ;  uart1_init();
 0048 DFDF              xcall _uart1_init
 004A 03C0              xjmp L13
 004C           L12:
 004C                   .dbline 49
 004C                   .dbline 50
 004C F5DF              xcall _getchar1
 004E 402F              mov R20,R16
 0050                   .dbline 51
 0050 ECDF              xcall _putchar1
 0052                   .dbline 52
 0052           L13:
 0052                   .dbline 48
 0052 FCCF              xjmp L12
 0054           X0:
 0054                   .dbline -2
 0054           L11:
 0054                   .dbline 0 ; func end
 0054 0895              ret
 0056                   .dbsym r i 20 c
 0056                   .dbend

⌨️ 快捷键说明

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