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

📄 uart.lis

📁 PTR8000无线通信模块的单片机控制程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .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 + -