📄 uart.lis
字号:
.module uart.c
.area data(ram, con, rel)
0000 _RC0::
0000 .blkb 1
.area idata
0000 4C .byte 76
.area data(ram, con, rel)
0001 .dbfile E:\iccavr\无线+I2C\test1--uart\uart.c
0001 .dbsym e RC0 _RC0 c
0001 _RC1::
0001 .blkb 1
.area idata
0001 0C .byte 12
.area data(ram, con, rel)
0002 .dbfile E:\iccavr\无线+I2C\test1--uart\uart.c
0002 .dbsym e RC1 _RC1 c
0002 _Add::
0002 .blkb 1
.area idata
0002 A1 .byte 161
.area data(ram, con, rel)
0003 .dbfile E:\iccavr\无线+I2C\test1--uart\uart.c
0003 .dbsym e Add _Add c
.area vector(rom, abs)
.org 22
0016 00C0 rjmp _uart0_rx_isr
.area data(ram, con, rel)
0003 .dbfile E:\iccavr\无线+I2C\test1--uart\uart.c
.area text(rom, con, rel)
0000 .dbfile E:\iccavr\无线+I2C\test1--uart\uart.c
0000 .dbfunc e uart0_rx_isr _uart0_rx_isr fV
.even
0000 _uart0_rx_isr::
0000 00D0 rcall push_lset
0002 .dbline -1
0002 .dbline 72
0002 ; //*************************程序说明部分**************************************
0002 ; //本程序基于无线模块第3版(2005 12 13) 编写,通过MEGA8 与PTR8000
0002 ; //实现上位机与下位机之间的程序传输
0002 ; //主控制器MEGA8,晶振11.0592M
0002 ; //*************************管脚定义部分**************************************
0002 ; //SPI通讯部分
0002 ; //PB2----SS
0002 ; //PB3----MOSI
0002 ; //PB4----MISO
0002 ; //PB5----SCK
0002 ;
0002 ; //PTR8000控制引脚
0002 ; //PC0----CD----INPUT
0002 ; //PC1----AM----INPUT
0002 ; //PC2----DR----INPUT
0002 ; //PC3----PWR-----OUTPUT
0002 ; //PC4----TXEN----OUTPUT
0002 ; //PC5----TRXCE---OUTPUT
0002 ;
0002 ; //载波频率控制
0002 ; //PD2---PD7 ----6BIT频率选择
0002 ;
0002 ; //PB0----SPEAKER
0002 ; //PB1----LED
0002 ;
0002 ; //*************************头文件包含部分***********************************
0002 ; #include <iom8v.h>
0002 ; #include <macros.h>
0002 ; //*************************宏定义部分*****************************************
0002 ; #define WC 0x00 //Write configuration register Command
0002 ; #define RC 0x10 //Read configuration register Command
0002 ; #define WTP 0x20 //Write TX payload Command
0002 ; #define RTP 0x21 //Read TX payload Command
0002 ; #define WTA 0x22 //Write TX Address Command
0002 ; #define RTA 0x23 //Read TX Address Command
0002 ; #define RRP 0x24 //Read RX payload Command
0002 ;
0002 ; //*************************全局变量定义部分*******************************
0002 ; unsigned char Tran;
0002 ; unsigned char Recv;
0002 ; unsigned char RC0 = 0x4c,RC1 = 0x0c;
0002 ; unsigned char Add = 0xa1;
0002 ; //*************************函数定义部分**************************************
0002 ; void init_port(void); //初始化MEGA各控制引脚
0002 ;
0002 ; void Delay_1ms(void); //延时1ms函数
0002 ; void Delay_Nms(unsigned int i); //延时Nms函数
0002 ; void LED(unsigned char i); //点亮/熄灭LED
0002 ;
0002 ; //串口通讯用函数
0002 ; void Uart_Init(void); //UART初始化
0002 ; void Uart_Send(unsigned char c); //UART发送一个字符
0002 ;
0002 ;
0002 ; //SPI通讯用函数
0002 ; void SPI_MasterInit(void); //SPI主机初始化
0002 ; void SPI_M_Send(unsigned char c); //主机方式发送一个字符
0002 ; unsigned char SPI_M_Recv(unsigned char c); //主机接收一个字符
0002 ;
0002 ; //PTR8000用函数
0002 ; void PTR8_Standby(void); //set TRC_CE Disable
0002 ; void PTR8_TREN(void); //set TRX_CE Enable
0002 ; void PTR8_TX(void); //无线模块发送状态
0002 ; void PTR8_RX(void); //无线模块接收状态
0002 ; void Init_PTR8_CR(void); //初始化PTR8000控制状态
0002 ;
0002 ; void Init_Device(void); //初始化串口、SPI口及其他设备
0002 ;
0002 ; //******************************函数实现部分************************************
0002 ; #pragma interrupt_handler uart0_rx_isr:12
0002 ; void uart0_rx_isr(void)
0002 ; {
0002 .dbline 73
0002 ; Recv = UDR;
0002 2CB0 in R2,0xc
0004 20920000 sts _Recv,R2
0008 .dbline 74
0008 ; Uart_Send(Recv);
0008 022D mov R16,R2
000A 36D0 rcall _Uart_Send
000C .dbline -2
000C .dbline 76
000C ;
000C ; }
000C L1:
000C 00D0 rcall pop_lset
000E .dbline 0 ; func end
000E 1895 reti
0010 .dbend
0010 .dbfunc e init_port _init_port fV
.even
0010 _init_port::
0010 .dbline -1
0010 .dbline 88
0010 ;
0010 ; /* 函数名: init_port
0010 ; 功能说明:初始化各MEGA8各控制引脚
0010 ; 参数说明:无
0010 ; 函数作者:Haibo YU
0010 ; 版本号: 1.0
0010 ; 创建时间:2005-12-23
0010 ; 修改时间:
0010 ; 修改内容: */
0010 ;
0010 ; void init_port(void)
0010 ; {
0010 .dbline 89
0010 ; PORTB = 0x2f; //置PB0,PB1,PB2,PB3,PB5为1,PB4,PB6,PB7为0
0010 8FE2 ldi R24,47
0012 88BB out 0x18,R24
0014 .dbline 90
0014 ; DDRB = 0x2f; //置PB0--SPK,PB1--LED,PB2--SS,PB3--MOSI,PB5--SCK为输出,PB4--MISO为输入
0014 87BB out 0x17,R24
0016 .dbline 91
0016 ; PORTC = 0x18; //置PWR,TXEN为1, TRXCE为0
0016 88E1 ldi R24,24
0018 85BB out 0x15,R24
001A .dbline 92
001A ; DDRC = 0x38; //置PC0,PC1,PC2输入;PC3--PWR,PC4--TXEN,PC5--TRXCE输出
001A 88E3 ldi R24,56
001C 84BB out 0x14,R24
001E .dbline 93
001E ; PORTD = 0xff;
001E 8FEF ldi R24,255
0020 82BB out 0x12,R24
0022 .dbline 94
0022 ; DDRD = 0x00; //置PD口全部为输入,启动内部弱上拉
0022 2224 clr R2
0024 21BA out 0x11,R2
0026 .dbline -2
0026 .dbline 95
0026 ; }
0026 L2:
0026 .dbline 0 ; func end
0026 0895 ret
0028 .dbend
0028 .dbfunc e Delay_1ms _Delay_1ms fV
0028 ; i -> R16,R17
.even
0028 _Delay_1ms::
0028 .dbline -1
0028 .dbline 107
0028 ; //**************************************************************************************
0028 ;
0028 ; /* 函数名: Delay_1ms
0028 ; 功能说明:软件延时1ms
0028 ; 参数说明:无
0028 ; 函数作者:Haibo YU
0028 ; 版本号: 1.0
0028 ; 创建时间:2005-12-06
0028 ; 修改时间:
0028 ; 修改内容: */
0028 ; void Delay_1ms(void)
0028 ; {
0028 .dbline 109
0028 ; unsigned int i;
0028 ; for ( i = 0 ; i < ( unsigned int ) 11 * 143 - 2 ; i ++ )
0028 0027 clr R16
002A 1127 clr R17
002C 02C0 rjmp L7
002E L4:
002E .dbline 110
002E L5:
002E .dbline 109
002E 0F5F subi R16,255 ; offset = 1
0030 1F4F sbci R17,255
0032 L7:
0032 .dbline 109
0032 0332 cpi R16,35
0034 E6E0 ldi R30,6
0036 1E07 cpc R17,R30
0038 D0F3 brlo L4
003A .dbline -2
003A .dbline 111
003A ; ;
003A ; }
003A L3:
003A .dbline 0 ; func end
003A 0895 ret
003C .dbsym r i 16 i
003C .dbend
003C .dbfunc e Delay_Nms _Delay_Nms fV
003C ; j -> R20,R21
003C ; N -> R22,R23
.even
003C _Delay_Nms::
003C 00D0 rcall push_gset2
003E B801 movw R22,R16
0040 .dbline -1
0040 .dbline 123
0040 ; //******************************************************************
0040 ;
0040 ; /* 函数名: Delay_Nms
0040 ; 功能说明:软件延时Nms,适用于所有CPU
0040 ; 参数说明:N值决定延时长度。范围为0~65536之间的整数
0040 ; 函数作者:Haibo YU
0040 ; 版本号: 1.0
0040 ; 创建时间:2005-12-06
0040 ; 修改时间:
0040 ; 修改内容: */
0040 ; void Delay_Nms(unsigned int N)
0040 ; {
0040 .dbline 125
0040 ; unsigned int j;
0040 ; for( j = 0 ; j < N ; j ++ )
0040 4427 clr R20
0042 5527 clr R21
0044 03C0 rjmp L12
0046 L9:
0046 .dbline 126
0046 F0DF rcall _Delay_1ms
0048 L10:
0048 .dbline 125
0048 4F5F subi R20,255 ; offset = 1
004A 5F4F sbci R21,255
004C L12:
004C .dbline 125
004C 4617 cp R20,R22
004E 5707 cpc R21,R23
0050 D0F3 brlo L9
0052 .dbline -2
0052 .dbline 127
0052 ; Delay_1ms();
0052 ; }
0052 L8:
0052 00D0 rcall pop_gset2
0054 .dbline 0 ; func end
0054 0895 ret
0056 .dbsym r j 20 i
0056 .dbsym r N 22 i
0056 .dbend
0056 .dbfunc e LED _LED fV
0056 ; i -> R16
.even
0056 _LED::
0056 .dbline -1
0056 .dbline 140
0056 ; //*******************************************************************
0056 ;
0056 ; /* 函数名: LED
0056 ; 功能说明:点亮/熄灭LED
0056 ; 参数说明:0----点亮;1----熄灭
0056 ; 函数作者:Haibo YU
0056 ; 版本号: 1.0
0056 ; 创建时间:2005-12-23
0056 ; 修改时间:
0056 ; 修改内容: */
0056 ;
0056 ; void LED(unsigned char i)
0056 ; {
0056 .dbline 141
0056 ; if(i == 0)
0056 0023 tst R16
0058 11F4 brne L14
005A .dbline 142
005A ; PORTB &= ~BIT(PB1);
005A C198 cbi 0x18,1
005C 01C0 rjmp L15
005E L14:
005E .dbline 144
005E C19A sbi 0x18,1
0060 L15:
0060 .dbline -2
0060 .dbline 145
0060 ; else
0060 ; PORTB |= BIT(PB1);
0060 ; }
0060 L13:
0060 .dbline 0 ; func end
0060 0895 ret
0062 .dbsym r i 16 c
0062 .dbend
0062 .dbfunc e Uart_Init _Uart_Init fV
.even
0062 _Uart_Init::
0062 .dbline -1
0062 .dbline 161
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -