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

📄 chuankou.lis

📁 ATMAGE128串口通信程序-中断方式
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module chuankou.c
                        .area text(rom, con, rel)
 0000                   .dbfile ..\..\..\..\DOCUME~1\wangqinbo\MYDOCU~1\avrc\chuankou.c
                        .area data(ram, con, rel)
 0000                   .dbfile ..\..\..\..\DOCUME~1\wangqinbo\MYDOCU~1\avrc\chuankou.c
 0000           _data::
 0000                   .blkb 1
                        .area idata
 0000 3B                .byte 59
                        .area data(ram, con, rel)
 0001                   .dbfile ..\..\..\..\DOCUME~1\wangqinbo\MYDOCU~1\avrc\chuankou.c
 0001                   .dbfile C:\DOCUME~1\wangqinbo\MYDOCU~1\avrc\chuankou.c
 0001                   .dbsym e data _data c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\wangqinbo\MYDOCU~1\avrc\chuankou.c
 0000                   .dbfunc e usart0_char_send _usart0_char_send fV
 0000           ;              i -> R16
                        .even
 0000           _usart0_char_send::
 0000                   .dbline -1
 0000                   .dbline 36
 0000           ; /***********************************************************/
 0000           ; //Title:ATMAGE128串口通信程序-中断方式
 0000           ; //ICC-AVR : 2009-2-20 15:30:43
 0000           ; // Target : M16
 0000           ; // Crystal: 8.0000Mhz
 0000           ; //Author  :borlittle
 0000           ; //Function:UART test
 0000           ; //备注          :本程序经调试好使,如果程序不好使,请注意检查
 0000           ; //更改波特率和晶振频率以及检查调试助手和单片机的熔丝位
 0000           ; //设置,尤其是103兼容模式的熔丝位不编程M128和M16串口通
 0000           ; //信程序大同小异,M128有两个串口UART0、UART1而M16只有一
 0000           ; //个串口UART,只需要修改相应的寄存器和引脚设置即可
 0000           ; /***********************************************************/
 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           ; volatile uchar data_temp;
 0000           ; volatile uchar data=59; //‘;’号的ASCII码
 0000           ; 
 0000           ; //函数声明
 0000           ; void port_init(void);
 0000           ; void uart0_init(void);
 0000           ; void init_devices(void);
 0000           ; void usart0_char_send(uchar i);
 0000           ; void usart0_str_send(char *s);
 0000           ; void usart0_str_sendArray(uchar *p,uchar len);
 0000           ; 
 0000           ; //****************发送一个字符******************************
 0000           ; void usart0_char_send(uchar i)
 0000           ; {
 0000           L2:
 0000                   .dbline 37
 0000           ; while(!(UCSR0A&(1<<UDRE0)));
 0000           L3:
 0000                   .dbline 37
 0000 5D9B              sbis 0xb,5
 0002 FECF              rjmp L2
 0004           X0:
 0004                   .dbline 38
 0004           ; UDR0=i;
 0004 0CB9              out 0xc,R16
 0006                   .dbline -2
 0006           L1:
 0006                   .dbline 0 ; func end
 0006 0895              ret
 0008                   .dbsym r i 16 c
 0008                   .dbend
 0008                   .dbfunc e usart0_str_send _usart0_str_send fV
 0008           ;              s -> R20,R21
                        .even
 0008           _usart0_str_send::
 0008 4A93              st -y,R20
 000A 5A93              st -y,R21
 000C A801              movw R20,R16
 000E                   .dbline -1
 000E                   .dbline 42
 000E           ; }
 000E           ; /******************发送一个字符串*************************/
 000E           ; void usart0_str_send(char *s) 
 000E           ; {
 000E 05C0              xjmp L7
 0010           L6:
 0010                   .dbline 44
 0010           ;  while(*s)
 0010           ;  {
 0010                   .dbline 45
 0010           ;  usart0_char_send(*s); 
 0010 FA01              movw R30,R20
 0012 0081              ldd R16,z+0
 0014 F5DF              xcall _usart0_char_send
 0016                   .dbline 46
 0016           ;  s++;
 0016 4F5F              subi R20,255  ; offset = 1
 0018 5F4F              sbci R21,255
 001A                   .dbline 47
 001A           ;  }
 001A           L7:
 001A                   .dbline 43
 001A FA01              movw R30,R20
 001C 2080              ldd R2,z+0
 001E 2220              tst R2
 0020 B9F7              brne L6
 0022           X1:
 0022                   .dbline -2
 0022           L5:
 0022                   .dbline 0 ; func end
 0022 5991              ld R21,y+
 0024 4991              ld R20,y+
 0026 0895              ret
 0028                   .dbsym r s 20 pc
 0028                   .dbend
 0028                   .dbfunc e usart0_str_sendArray _usart0_str_sendArray fV
 0028           ;              i -> R10
 0028           ;            len -> R12
 0028           ;              p -> R20,R21
                        .even
 0028           _usart0_str_sendArray::
 0028 0E940000          xcall push_xgset303C
 002C C22E              mov R12,R18
 002E A801              movw R20,R16
 0030                   .dbline -1
 0030                   .dbline 51
 0030           ; }
 0030           ; /*********************发送一个字符串**********************/
 0030           ; void usart0_str_sendArray(uchar *p,uchar len)
 0030           ; {
 0030                   .dbline 53
 0030           ;   uchar i;
 0030           ;   for(i=0;i<len;i++)  //控制字符个数
 0030 AA24              clr R10
 0032 06C0              xjmp L13
 0034           L10:
 0034                   .dbline 54
 0034           ;   {
 0034                   .dbline 55
 0034           ;     usart0_char_send(*p);
 0034 FA01              movw R30,R20
 0036 0081              ldd R16,z+0
 0038 E3DF              xcall _usart0_char_send
 003A                   .dbline 56
 003A           ;     p++;
 003A 4F5F              subi R20,255  ; offset = 1
 003C 5F4F              sbci R21,255
 003E                   .dbline 57
 003E           ;   }
 003E           L11:
 003E                   .dbline 53
 003E A394              inc R10
 0040           L13:
 0040                   .dbline 53
 0040 AC14              cp R10,R12
 0042 C0F3              brlo L10
 0044           X2:
 0044                   .dbline -2
 0044           L9:
 0044                   .dbline 0 ; func end
 0044 0C940000          xjmp pop_xgset303C
 0048                   .dbsym r i 10 c
 0048                   .dbsym r len 12 c
 0048                   .dbsym r p 20 pc
 0048                   .dbend
 0048                   .dbfunc e port_init _port_init fV
                        .even
 0048           _port_init::
 0048                   .dbline -1
 0048                   .dbline 63
 0048           ; }
 0048           ; 
 0048           ; 
 0048           ; /******************端口初始化*******************************/
 0048           ; void port_init(void) 
 0048           ; {
 0048                   .dbline 64
 0048           ;  PORTA = 0xFF; 
 0048 8FEF              ldi R24,255
 004A 8BBB              out 0x1b,R24
 004C                   .dbline 65
 004C           ;  DDRA  = 0x00; 
 004C 2224              clr R2
 004E 2ABA              out 0x1a,R2
 0050                   .dbline 66
 0050           ;  PORTB = 0xFF; 
 0050 88BB              out 0x18,R24
 0052                   .dbline 67
 0052           ;  DDRB  = 0xFF; 
 0052 87BB              out 0x17,R24
 0054                   .dbline 68
 0054           ;  PORTC = 0xFF; 
 0054 85BB              out 0x15,R24
 0056                   .dbline 69
 0056           ;  DDRC  = 0x00;
 0056 24BA              out 0x14,R2
 0058                   .dbline 71
 0058           ;   
 0058           ;  PORTE = 0xFF;   //设置RXD0和TXD0
 0058 83B9              out 0x3,R24
 005A                   .dbline 72
 005A           ;  DDRE  = 0x02;
 005A 82E0              ldi R24,2
 005C 82B9              out 0x2,R24
 005E                   .dbline 74
 005E           ;  
 005E           ;  PORTF = 0xFF; 

⌨️ 快捷键说明

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