?? uart.lis
字號:
.module uart.c
.area text(rom, con, rel)
0000 .dbfile C:\AVR_TOOL\test\uart.c
0000 .dbfunc e Uart0_Init _Uart0_Init fV
.even
0000 _Uart0_Init::
0000 .dbline -1
0000 .dbline 19
0000 ; //-----------------------------------------------------------
0000 ; //程序由AVR輔助開發工具V2.1.1自動生成
0000 ; //MCU系統的處理器為: ATMega128
0000 ; //MCU系統的晶振頻率: 8.0000 Mhz
0000 ; //-----------------------------------------------------------
0000 ;
0000 ; #include <iom128v.h>
0000 ; #include "uart.h"
0000 ; #include "delay.h"
0000 ;
0000 ;
0000 ; //-----------------------------------------------------------
0000 ; //串口0初始化子程序
0000 ; //字符長度:8位
0000 ; //奇偶校驗:禁止
0000 ; //通訊模式:異步
0000 ; //-----------------------------------------------------------
0000 ; void Uart0_Init(void)
0000 ; {
0000 .dbline 20
0000 ; UCSR0B = 0x00; //disable while setting baud rate
0000 2224 clr R2
0002 2AB8 out 0xa,R2
0004 .dbline 21
0004 ; UCSR0A = 0x00; //Bit1為1則倍速發送
0004 2BB8 out 0xb,R2
0006 .dbline 22
0006 ; UCSR0C = 0x06;
0006 86E0 ldi R24,6
0008 80939500 sts 149,R24
000C .dbline 23
000C ; UBRR0L = 0x22; //波特率:14400 Bps
000C 82E2 ldi R24,34
000E 89B9 out 0x9,R24
0010 .dbline 24
0010 ; UBRR0H = 0x00; //誤差率:-0.799%
0010 20929000 sts 144,R2
0014 .dbline 25
0014 ; UCSR0B = 0x18;
0014 88E1 ldi R24,24
0016 8AB9 out 0xa,R24
0018 .dbline 27
0018 ; //初始化RS485通訊的流控制引腳
0018 ; RS485_RD0_PORT|= RS485_RD0_BIT;
0018 1A9A sbi 0x3,2
001A .dbline 28
001A ; RS485_RD0_DDR|= RS485_RD0_BIT;
001A 129A sbi 0x2,2
001C .dbline 29
001C ; RS485_RD0_L;
001C 1A9A sbi 0x3,2
001E .dbline -2
001E L1:
001E .dbline 0 ; func end
001E 0895 ret
0020 .dbend
0020 .dbfunc e Getchar0 _Getchar0 fc
.even
0020 _Getchar0::
0020 .dbline -1
0020 .dbline 36
0020 ; }
0020 ;
0020 ; //-----------------------------------------------------------
0020 ; //串口0接收字節子程序
0020 ; //-----------------------------------------------------------
0020 ; unsigned char Getchar0(void)
0020 ; {
0020 L3:
0020 .dbline 37
0020 L4:
0020 .dbline 37
0020 ; while(!(UCSR0A& (1<<RXC0)));
0020 5F9B sbis 0xb,7
0022 FECF rjmp L3
0024 .dbline 38
0024 ; return UDR0;
0024 0CB1 in R16,0xc
0026 .dbline -2
0026 L2:
0026 .dbline 0 ; func end
0026 0895 ret
0028 .dbend
0028 .dbfunc e Putchar0 _Putchar0 fV
0028 ; c -> R20
.even
0028 _Putchar0::
0028 0E940000 xcall push_gset1
002C 402F mov R20,R16
002E .dbline -1
002E .dbline 45
002E ; }
002E ;
002E ; //-----------------------------------------------------------
002E ; //串口0發送字節子程序
002E ; //-----------------------------------------------------------
002E ; void Putchar0(unsigned char c)
002E ; {
002E .dbline 46
002E ; RS485_RD0_H;
002E 1A98 cbi 0x3,2
0030 L7:
0030 .dbline 47
0030 L8:
0030 .dbline 47
0030 ; while (!(UCSR0A&(1<<UDRE0)));
0030 5D9B sbis 0xb,5
0032 FECF rjmp L7
0034 .dbline 48
0034 ; UDR0=c;
0034 4CB9 out 0xc,R20
0036 L10:
0036 .dbline 49
0036 L11:
0036 .dbline 49
0036 ; while (!(UCSR0A&(1<<UDRE0)));
0036 5D9B sbis 0xb,5
0038 FECF rjmp L10
003A .dbline 50
003A ; delay_nus(500);
003A 04EF ldi R16,500
003C 11E0 ldi R17,1
003E 0E940000 xcall _delay_nus
0042 .dbline 51
0042 ; RS485_RD0_L;
0042 1A9A sbi 0x3,2
0044 .dbline -2
0044 L6:
0044 0E940000 xcall pop_gset1
0048 .dbline 0 ; func end
0048 0895 ret
004A .dbsym r c 20 c
004A .dbend
004A .dbfunc e Putstr0 _Putstr0 fV
004A ; s -> R20,R21
.even
004A _Putstr0::
004A 0E940000 xcall push_gset1
004E A801 movw R20,R16
0050 .dbline -1
0050 .dbline 58
0050 ; }
0050 ;
0050 ; //-----------------------------------------------------------
0050 ; //串口0發送字符串子程序
0050 ; //-----------------------------------------------------------
0050 ; void Putstr0(char *s)
0050 ; {
0050 05C0 xjmp L15
0052 L14:
0052 .dbline 60
0052 .dbline 61
0052 FA01 movw R30,R20
0054 0081 ldd R16,z+0
0056 E8DF xcall _Putchar0
0058 .dbline 62
0058 4F5F subi R20,255 ; offset = 1
005A 5F4F sbci R21,255
005C .dbline 63
005C L15:
005C .dbline 59
005C ; while (*s)
005C FA01 movw R30,R20
005E 2080 ldd R2,z+0
0060 2220 tst R2
0062 B9F7 brne L14
0064 .dbline -2
0064 L13:
0064 0E940000 xcall pop_gset1
0068 .dbline 0 ; func end
0068 0895 ret
006A .dbsym r s 20 pc
006A .dbend
006A .dbfunc e Puts0 _Puts0 fV
006A ; s -> R20,R21
.even
006A _Puts0::
006A 0E940000 xcall push_gset1
006E A801 movw R20,R16
0070 .dbline -1
0070 .dbline 70
0070 ; {
0070 ; Putchar0(*s);
0070 ; s++;
0070 ; }
0070 ; }
0070 ;
0070 ; //-----------------------------------------------------------
0070 ; //串口0發送字符串子程序(帶有換行符)
0070 ; //-----------------------------------------------------------
0070 ; void Puts0(char *s)
0070 ; {
0070 05C0 xjmp L19
0072 L18:
0072 .dbline 72
0072 .dbline 73
0072 FA01 movw R30,R20
0074 0081 ldd R16,z+0
0076 D8DF xcall _Putchar0
0078 .dbline 74
0078 4F5F subi R20,255 ; offset = 1
007A 5F4F sbci R21,255
007C .dbline 75
007C L19:
007C .dbline 71
007C ; while (*s)
007C FA01 movw R30,R20
007E 2080 ldd R2,z+0
0080 2220 tst R2
0082 B9F7 brne L18
0084 .dbline 76
0084 ; {
0084 ; Putchar0(*s);
0084 ; s++;
0084 ; }
0084 ; Putchar0(0x0d); //回車換行
0084 0DE0 ldi R16,13
0086 D0DF xcall _Putchar0
0088 .dbline 77
0088 ; Putchar0(0x0a);
0088 0AE0 ldi R16,10
008A CEDF xcall _Putchar0
008C .dbline -2
008C L17:
008C 0E940000 xcall pop_gset1
0090 .dbline 0 ; func end
0090 0895 ret
0092 .dbsym r s 20 pc
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -