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

📄 chuankou.lis

📁 ATMAGE128串口通信程序-查询方式 ICCAVR编译
💻 LIS
字号:
                        .module chuankou.c
                        .area text(rom, con, rel)
 0000                   .dbfile ..\..\..\..\DOCUME~1\wangqinbo\MYDOCU~1\avrc\chuankou.c
 0000                   .dbfile C:\DOCUME~1\wangqinbo\MYDOCU~1\avrc\chuankou.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 30
 0000           ; /***********************************************************/
 0000           ; //Title:ATMAGE128串口通信程序-查询方式
 0000           ; //ICC-AVR : 2009-2-22 13:37:40
 0000           ; // Target : M128
 0000           ; // Crystal: 8.0000Mhz
 0000           ; //Author  :borlittle
 0000           ; //Function:usart0 test
 0000           ; //备注   :本程序经调试好使,如果程序不好使,请注意检查更改波特率和晶振频率以及
 0000           ; //检查调试助手和单片机的熔丝位设置,尤其注意不要编程103模式兼容位
 0000           ; /***********************************************************/
 0000           ; #include <iom128v.h>
 0000           ; #include <macros.h>
 0000           ; 
 0000           ; #define uchar unsigned char      //定义无符号字符为 uchar
 0000           ; #define uint  unsigned int       //定义无符号整型
 0000           ; #define Crystal 8000000 //晶振8MHZ 
 0000           ; #define Baud 9600         //波特率
 0000           ; 
 0000           ; 
 0000           ; //函数声明
 0000           ; void port_init(void);
 0000           ; void usart0_init(void);
 0000           ; void init_devices(void);
 0000           ; void usart0_char_send(uchar i);
 0000           ; void usart0_str_send(char *s);
 0000           ; uchar usart0_char_receive(void);
 0000           ; 
 0000           ; /******************端口初始化*******************************/
 0000           ; void port_init(void) 
 0000           ; {
 0000                   .dbline 31
 0000           ;  PORTA = 0xFF; 
 0000 8FEF              ldi R24,255
 0002 8BBB              out 0x1b,R24
 0004                   .dbline 32
 0004           ;  DDRA  = 0x00; 
 0004 2224              clr R2
 0006 2ABA              out 0x1a,R2
 0008                   .dbline 33
 0008           ;  PORTB = 0xFF; 
 0008 88BB              out 0x18,R24
 000A                   .dbline 34
 000A           ;  DDRB  = 0xFF; 
 000A 87BB              out 0x17,R24
 000C                   .dbline 35
 000C           ;  PORTC = 0xFF; 
 000C 85BB              out 0x15,R24
 000E                   .dbline 36
 000E           ;  DDRC  = 0x00;
 000E 24BA              out 0x14,R2
 0010                   .dbline 38
 0010           ;   
 0010           ;  PORTE = 0xFF;   //设置RXD0和TXD0
 0010 83B9              out 0x3,R24
 0012                   .dbline 39
 0012           ;  DDRE  = 0x02;
 0012 82E0              ldi R24,2
 0014 82B9              out 0x2,R24
 0016                   .dbline 41
 0016           ;  
 0016           ;  PORTF = 0xFF; 
 0016 8FEF              ldi R24,255
 0018 80936200          sts 98,R24
 001C                   .dbline 42
 001C           ;  DDRF  = 0x00; 
 001C 20926100          sts 97,R2
 0020                   .dbline 43
 0020           ;  PORTG = 0xFF; 
 0020 80936500          sts 101,R24
 0024                   .dbline 44
 0024           ;  DDRG  = 0xFF; 
 0024 80936400          sts 100,R24
 0028                   .dbline -2
 0028           L1:
 0028                   .dbline 0 ; func end
 0028 0895              ret
 002A                   .dbend
 002A                   .dbfunc e usart0_init _usart0_init fV
                        .even
 002A           _usart0_init::
 002A                   .dbline -1
 002A                   .dbline 48
 002A           ; }
 002A           ; /*****************串口0初始化*********************************/
 002A           ; void usart0_init(void) 
 002A           ; {
 002A                   .dbline 49
 002A           ;  UCSR0B = 0x00;                     //禁止发送和接收
 002A 2224              clr R2
 002C 2AB8              out 0xa,R2
 002E                   .dbline 50
 002E           ;  UCSR0A = 0x02;                     //倍速异步模式USX0=1
 002E 82E0              ldi R24,2
 0030 8BB9              out 0xb,R24
 0032                   .dbline 51
 0032           ;  UCSR0C = 0x06;                     //0000 0110,UCSZ01=1,UCSZ00=1;8位字符,1位停止位 
 0032 86E0              ldi R24,6
 0034 80939500          sts 149,R24
 0038                   .dbline 52
 0038           ;  UBRR0L=(Crystal/8/(Baud+1))%256;   //若为正常异步模式USX0=0则位(Crystal/16/(Baud+1))%256
 0038 88E6              ldi R24,104
 003A 89B9              out 0x9,R24
 003C                   .dbline 53
 003C           ;  UBRR0H=(Crystal/8/(Baud+1))/256;   //参见ATMAGE128使用手册
 003C 20929000          sts 144,R2
 0040                   .dbline 54
 0040           ;  UCSR0B = 0x18;                     //允许发送和接收
 0040 88E1              ldi R24,24
 0042 8AB9              out 0xa,R24
 0044                   .dbline -2
 0044           L2:
 0044                   .dbline 0 ; func end
 0044 0895              ret
 0046                   .dbend
 0046                   .dbfunc e init_devices _init_devices fV
                        .even
 0046           _init_devices::
 0046                   .dbline -1
 0046                   .dbline 58
 0046           ; }
 0046           ; /******************初始器件**************************************/
 0046           ; void init_devices(void) 
 0046           ; {
 0046                   .dbline 59
 0046           ;  port_init();
 0046 DCDF              xcall _port_init
 0048                   .dbline 60
 0048           ;  usart0_init();
 0048                   .dbline -2
 0048           L3:
 0048                   .dbline 0 ; func end
 0048 F0CF              xjmp _usart0_init
 004A                   .dbend
 004A                   .dbfunc e usart0_char_send _usart0_char_send fV
 004A           ;              i -> R16
                        .even
 004A           _usart0_char_send::
 004A                   .dbline -1
 004A                   .dbline 64
 004A           ;  }
 004A           ; //****************发送一个字符******************************
 004A           ; void usart0_char_send(uchar i)
 004A           ; {
 004A           L5:
 004A                   .dbline 65
 004A           ; while(!(UCSR0A&(1<<UDRE0)));
 004A           L6:
 004A                   .dbline 65
 004A 5D9B              sbis 0xb,5
 004C FECF              rjmp L5
 004E           X0:
 004E                   .dbline 66
 004E           ; UDR0=i;
 004E 0CB9              out 0xc,R16
 0050                   .dbline -2
 0050           L4:
 0050                   .dbline 0 ; func end
 0050 0895              ret
 0052                   .dbsym r i 16 c
 0052                   .dbend
 0052                   .dbfunc e usart0_str_send _usart0_str_send fV
 0052           ;              s -> R20,R21
                        .even
 0052           _usart0_str_send::
 0052 4A93              st -y,R20
 0054 5A93              st -y,R21
 0056 A801              movw R20,R16
 0058                   .dbline -1
 0058                   .dbline 70
 0058           ; }
 0058           ; /******************发送一个字符串*************************/
 0058           ; void usart0_str_send(char *s) 
 0058           ; {
 0058 05C0              xjmp L10
 005A           L9:
 005A                   .dbline 72
 005A           ;  while(*s)
 005A           ;  {
 005A                   .dbline 73
 005A           ;  usart0_char_send(*s); 
 005A FA01              movw R30,R20
 005C 0081              ldd R16,z+0
 005E F5DF              xcall _usart0_char_send
 0060                   .dbline 74
 0060           ;  s++;
 0060 4F5F              subi R20,255  ; offset = 1
 0062 5F4F              sbci R21,255
 0064                   .dbline 75
 0064           ;  }
 0064           L10:
 0064                   .dbline 71
 0064 FA01              movw R30,R20
 0066 2080              ldd R2,z+0
 0068 2220              tst R2
 006A B9F7              brne L9
 006C           X1:
 006C                   .dbline -2
 006C           L8:
 006C                   .dbline 0 ; func end
 006C 5991              ld R21,y+
 006E 4991              ld R20,y+
 0070 0895              ret
 0072                   .dbsym r s 20 pc
 0072                   .dbend
 0072                   .dbfunc e usart0_char_receive _usart0_char_receive fc
                        .even
 0072           _usart0_char_receive::
 0072                   .dbline -1
 0072                   .dbline 79
 0072           ; }
 0072           ; /*****************接收一个字符****************************/
 0072           ; uchar usart0_char_receive(void) 
 0072           ; {
 0072           L13:
 0072                   .dbline 80
 0072           ; while(!(UCSR0A&(1<<RXC0)));
 0072           L14:
 0072                   .dbline 80
 0072 5F9B              sbis 0xb,7
 0074 FECF              rjmp L13
 0076           X2:
 0076                   .dbline 81
 0076           ; return UDR0;
 0076 0CB1              in R16,0xc
 0078                   .dbline -2
 0078           L12:
 0078                   .dbline 0 ; func end
 0078 0895              ret
 007A                   .dbend
 007A                   .dbfunc e main _main fV
 007A           ;    usart0_temp -> R10
                        .even
 007A           _main::
 007A                   .dbline -1
 007A                   .dbline 85
 007A           ; }
 007A           ; /***************主函数*****************************/
 007A           ; void main(void)
 007A           ; {
 007A                   .dbline 87
 007A           ; uchar usart0_temp; 
 007A           ; init_devices();
 007A E5DF              xcall _init_devices
 007C                   .dbline 88
 007C           ; usart0_str_send("usart0 WORKS WELL   ");
 007C 00E0              ldi R16,<L17
 007E 10E0              ldi R17,>L17
 0080 E8DF              xcall _usart0_str_send
 0082 0AC0              xjmp L19
 0084           L18:
 0084                   .dbline 90
 0084           ;  while(1) 
 0084           ;  {
 0084                   .dbline 91
 0084           ;  usart0_temp=usart0_char_receive();   //等待接收数据
 0084 F6DF              xcall _usart0_char_receive
 0086 A02E              mov R10,R16
 0088                   .dbline 92
 0088           ;  usart0_str_send("当前数据是:");     //发送数据
 0088 00E0              ldi R16,<L21
 008A 10E0              ldi R17,>L21
 008C E2DF              xcall _usart0_str_send
 008E                   .dbline 93
 008E           ;  usart0_char_send(usart0_temp); 
 008E 0A2D              mov R16,R10
 0090 DCDF              xcall _usart0_char_send
 0092                   .dbline 94
 0092           ;  usart0_str_send("  ");
 0092 00E0              ldi R16,<L22
 0094 10E0              ldi R17,>L22
 0096 DDDF              xcall _usart0_str_send
 0098                   .dbline 95
 0098           ;  } 
 0098           L19:
 0098                   .dbline 89
 0098 F5CF              xjmp L18
 009A           X3:
 009A                   .dbline -2
 009A           L16:
 009A                   .dbline 0 ; func end
 009A 0895              ret
 009C                   .dbsym r usart0_temp 10 c
 009C                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile C:\DOCUME~1\wangqinbo\MYDOCU~1\avrc\chuankou.c
 0000           L22:
 0000                   .blkb 3
                        .area idata
 0000 202000            .byte 32,32,0
                        .area data(ram, con, rel)
 0003                   .dbfile C:\DOCUME~1\wangqinbo\MYDOCU~1\avrc\chuankou.c
 0003           L21:
 0003                   .blkb 13
                        .area idata
 0003 B5B1C7B0CAFDBEDDCAC7A3BA00        .byte 181,177,199,176,202,253,190,221,202,199,163,186,0
                        .area data(ram, con, rel)
 0010                   .dbfile C:\DOCUME~1\wangqinbo\MYDOCU~1\avrc\chuankou.c
 0010           L17:
 0010                   .blkb 21
                        .area idata
 0010 75736172743020574F524B532057454C  .byte 'u,'s,'a,'r,'t,48,32,'W,'O,'R,'K,'S,32,'W,'E,'L
 0020 4C20202000        .byte 'L,32,32,32,0
                        .area data(ram, con, rel)
 0025                   .dbfile C:\DOCUME~1\wangqinbo\MYDOCU~1\avrc\chuankou.c
 0025           ; }
 0025           ; 

⌨️ 快捷键说明

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