?? chuankou.lis
字號:
.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 ; //備注 :本程序經(jīng)調(diào)試好使,如果程序不好使,請注意檢查
0000 ; //更改波特率和晶振頻率以及檢查調(diào)試助手和單片機的熔絲位
0000 ; //設(shè)置,尤其是103兼容模式的熔絲位不編程M128和M16串口通
0000 ; //信程序大同小異,M128有兩個串口UART0、UART1而M16只有一
0000 ; //個串口UART,只需要修改相應(yīng)的寄存器和引腳設(shè)置即可
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 ; //函數(shù)聲明
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 ; //****************發(fā)送一個字符******************************
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 ; /******************發(fā)送一個字符串*************************/
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 ; /*********************發(fā)送一個字符串**********************/
0030 ; void usart0_str_sendArray(uchar *p,uchar len)
0030 ; {
0030 .dbline 53
0030 ; uchar i;
0030 ; for(i=0;i<len;i++) //控制字符個數(shù)
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; //設(shè)置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 + -