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

📄 twimain.lis

📁 PTR8000无线通信模块的单片机控制程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module twimain.c
                        .area vector(rom, abs)
                        .org 34
 0022 00C0              rjmp _twi_isr
                        .area data(ram, con, rel)
 0000           _receive_data::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile E:\iccavr\无线+I2C\test1--mt\twimain.c
 0001                   .dbsym e receive_data _receive_data c
 0001           _error_state::
 0001                   .blkb 1
                        .area idata
 0001 00                .byte 0
                        .area data(ram, con, rel)
 0002                   .dbfile E:\iccavr\无线+I2C\test1--mt\twimain.c
 0002                   .dbsym e error_state _error_state c
 0002           _slave_address::
 0002                   .blkb 1
                        .area idata
 0002 A0                .byte 160
                        .area data(ram, con, rel)
 0003                   .dbfile E:\iccavr\无线+I2C\test1--mt\twimain.c
 0003                   .dbsym e slave_address _slave_address c
 0003           _bit_race::
 0003                   .blkb 1
                        .area idata
 0003 20                .byte 32
                        .area data(ram, con, rel)
 0004                   .dbfile E:\iccavr\无线+I2C\test1--mt\twimain.c
 0004                   .dbsym e bit_race _bit_race c
 0004           _send_data::
 0004                   .blkb 1
                        .area idata
 0004 02                .byte 2
                        .area data(ram, con, rel)
 0005                   .dbfile E:\iccavr\无线+I2C\test1--mt\twimain.c
 0005                   .dbsym e send_data _send_data c
 0005           _trandata::
 0005                   .blkb 2
                        .area idata
 0005 0001              .byte 0,1
                        .area data(ram, con, rel)
 0007                   .dbfile E:\iccavr\无线+I2C\test1--mt\twimain.c
 0007                   .blkb 2
                        .area idata
 0007 0203              .byte 2,3
                        .area data(ram, con, rel)
 0009                   .dbfile E:\iccavr\无线+I2C\test1--mt\twimain.c
 0009                   .dbsym e trandata _trandata A[4:4]c
 0009           _RC0::
 0009                   .blkb 1
                        .area idata
 0009 4C                .byte 76
                        .area data(ram, con, rel)
 000A                   .dbfile E:\iccavr\无线+I2C\test1--mt\twimain.c
 000A                   .dbsym e RC0 _RC0 c
 000A           _RC1::
 000A                   .blkb 1
                        .area idata
 000A 0C                .byte 12
                        .area data(ram, con, rel)
 000B                   .dbfile E:\iccavr\无线+I2C\test1--mt\twimain.c
 000B                   .dbsym e RC1 _RC1 c
 000B           _Add::
 000B                   .blkb 1
                        .area idata
 000B A1                .byte 161
                        .area data(ram, con, rel)
 000C                   .dbfile E:\iccavr\无线+I2C\test1--mt\twimain.c
 000C                   .dbsym e Add _Add c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\iccavr\无线+I2C\test1--mt\twimain.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 81
 0000           ; 
 0000           ; /*函数的使用说明:
 0000           ; 1.该twi模块包含四种工作模式,主发,主收,从收,从发,其中主发由
 0000           ;   twiWriteByte(从机地址,要发送的数据)实现,主收由twiReadByte(从机地址)实现,从机
 0000           ;   的发送与接收均通过中断实现
 0000           ; 2.在从机模式下,需调用twi_init()来使能并初始化twi总线
 0000           ; 3.在主机模式下,调用twiWriteByte(从机地址,要发送的数据)向指定的从机写入数据,
 0000           ;   调用twiReadByte(从机地址)从指定的从机读取数据,然后可通过查询错误状态error_state
 0000           ;   的值决定下一步如何操作。
 0000           ; */
 0000           ; 
 0000           ; #include "twi.h"
 0000           ; 
 0000           ; //TWI同程序的接口参数
 0000           ; //receive_data,error_state不用设置
 0000           ; char receive_data=0;                    // 接收到的数据
 0000           ; char error_state=0;                     // twi错误状态
 0000           ; //以下三个参数根据需求进行设置
 0000           ; char slave_address=0xa0;      // 设置从机地址,Bits 7..1:存放从机地址,Bit 0:最低位为广播识别使能位
 0000           ; char bit_race=0x20;           // 设置主机模式的比特率,SCL=CPU频率/(16+2*(TWBR)*4TWPS),TWPS在4的指数位置
 0000           ; char send_data=0x02;            // 从机发送模式下从机向主机发送的数据
 0000           ; //要发送的数据
 0000           ; char trandata[num] = {0x00,0x01,0x02,0x03};
 0000           ; //*************************PTR8000全局变量**********************************
 0000           ; unsigned char Recv;
 0000           ; unsigned char RC0 = 0x4c,RC1 = 0x0c;//用于设置发送频率
 0000           ; unsigned char Add = 0xa1; //设置发送地址
 0000           ; //*************************** twi错误状态说明*********************************
 0000           ; // 0:twi传送无错误
 0000           ; // 1:在主发模式下,SLA+W已发送,返回NOT ACK
 0000           ; // 2:在主发模式下,DATA已发送,返回NOT ACK
 0000           ; // 3:在主发模式下,SLA+W或者数据的仲裁失败
 0000           ; // 4:在主收模式下,SLA+R或者数据的仲裁失败
 0000           ; // 5:在主收模式下,SLA+R已发送,返回NOT ACK
 0000           ; // 6:在主发模式下,START信号发送不成功
 0000           ; // 7:在主收模式下,START信号发送不成功
 0000           ; // 8:在主收模式下,数据接受完成
 0000           ; // 9:在主收模式下,数据接受不成功
 0000           ; //*****************************************************************************
 0000           ; 
 0000           ; 
 0000           ; //*************************函数定义部分**************************************
 0000           ; void port_init(void);                 //初始化MEGA各控制引脚
 0000           ; 
 0000           ; void Delay_1ms(void);                                 //延时1ms函数
 0000           ; void Delay_Nms(unsigned int N);                       //延时Nms函数
 0000           ; void LED(unsigned char i);                        //点亮/熄灭LED
 0000           ; 
 0000           ; //串口通讯用函数
 0000           ; void Uart_Init(void);                                 //UART初始化
 0000           ; void Uart_Send(unsigned char c);                      //UART发送一个字符
 0000           ; 
 0000           ; 
 0000           ; //SPI通讯用函数
 0000           ; void SPI_MasterInit(void);    //SPI主机初始化
 0000           ; void SPI_M_Send(unsigned char c);     //主机方式发送一个字符
 0000           ; unsigned char  SPI_M_Recv(unsigned char c);   //主机接收一个字符
 0000           ; 
 0000           ; //PTR8000用函数
 0000           ; void PTR8_Standby(void);      //set TRC_CE Disable
 0000           ; void PTR8_TREN(void);         //set TRX_CE  Enable
 0000           ; void PTR8_TX(void);           //无线模块发送状态
 0000           ; void PTR8_RX(void);           //无线模块接收状态
 0000           ; void Init_PTR8_CR(void);      //初始化PTR8000控制状态
 0000           ; 
 0000           ; void Init_Device(void);       //初始化串口、SPI口及其他设备
 0000           ; 
 0000           ; //******************************函数实现部分************************************
 0000           ; 
 0000           ; //*************************** I/O 初始化****************************************
 0000           ; //******************************************************************************
 0000           ; /*    函数名:        init_port
 0000           ;       功能说明:初始化各MEGA8各控制引脚
 0000           ;       参数说明:无
 0000           ;       函数作者:Haibo YU
 0000           ;       版本号:        1.0
 0000           ;       创建时间:2005-12-23
 0000           ;       修改时间:
 0000           ;       修改内容:                              */
 0000           ; void port_init(void)
 0000           ; {
 0000                   .dbline 82
 0000           ;       PORTB = 0x2f;   //置PB0,PB1,PB2,PB3,PB5为1,PB4,PB6,PB7为0
 0000 8FE2              ldi R24,47
 0002 88BB              out 0x18,R24
 0004                   .dbline 83
 0004           ;       DDRB = 0x2f;    //置PB0,PB1,PB2--SS,PB3--MOSI,PB5--SCK为输出,PB4--MISO为输入
 0004 87BB              out 0x17,R24
 0006                   .dbline 84
 0006           ;       PORTC = 0x0f;   
 0006 8FE0              ldi R24,15
 0008 85BB              out 0x15,R24
 000A                   .dbline 85
 000A           ;       DDRC  = 0x0f;   //PC4--SDA,PC5--SCL为输入,PC0--PC3全为输出以便测试
 000A 84BB              out 0x14,R24
 000C                   .dbline 86
 000C           ;       PORTD = 0x05;   //置PWR,TXEN为1,  TRXCE为0
 000C 85E0              ldi R24,5
 000E 82BB              out 0x12,R24
 0010                   .dbline 87
 0010           ;       DDRD  = 0x07;   //置PD3,PD4,PD5输入;PD2--PWR,PD0--TXEN,PD1--TRXCE输出
 0010 87E0              ldi R24,7
 0012 81BB              out 0x11,R24
 0014                   .dbline -2
 0014                   .dbline 88
 0014           ; }
 0014           L1:
 0014                   .dbline 0 ; func end
 0014 0895              ret
 0016                   .dbend
 0016                   .dbfunc e Delay_1ms _Delay_1ms fV
 0016           ;              i -> R16,R17
                        .even
 0016           _Delay_1ms::
 0016                   .dbline -1
 0016                   .dbline 101
 0016           ; //**************************************************************************************
 0016           ; 
 0016           ; /*    函数名:        Delay_1ms
 0016           ;       功能说明:软件延时1ms
 0016           ;       参数说明:无
 0016           ;       函数作者:Haibo YU
 0016           ;       版本号:        1.0
 0016           ;       创建时间:2005-12-06
 0016           ;       修改时间:
 0016           ;       修改内容:                              */
 0016           ;       
 0016           ; void Delay_1ms(void)
 0016           ; {
 0016                   .dbline 103
 0016           ;       unsigned int i;
 0016           ;       for ( i = 0 ; i < ( unsigned int ) 11 * 143 - 2 ; i ++ )
 0016 0027              clr R16
 0018 1127              clr R17
 001A 02C0              rjmp L6
 001C           L3:
 001C                   .dbline 104
 001C           L4:
 001C                   .dbline 103
 001C 0F5F              subi R16,255  ; offset = 1
 001E 1F4F              sbci R17,255
 0020           L6:
 0020                   .dbline 103
 0020 0332              cpi R16,35
 0022 E6E0              ldi R30,6
 0024 1E07              cpc R17,R30
 0026 D0F3              brlo L3
 0028                   .dbline -2
 0028                   .dbline 105
 0028           ;               ;
 0028           ; }
 0028           L2:
 0028                   .dbline 0 ; func end
 0028 0895              ret
 002A                   .dbsym r i 16 i
 002A                   .dbend
 002A                   .dbfunc e Delay_Nms _Delay_Nms fV
 002A           ;              j -> R20,R21
 002A           ;              N -> R22,R23
                        .even
 002A           _Delay_Nms::
 002A 00D0              rcall push_gset2
 002C B801              movw R22,R16
 002E                   .dbline -1
 002E                   .dbline 117
 002E           ; //******************************************************************
 002E           ; 
 002E           ; /*    函数名:        Delay_Nms
 002E           ;       功能说明:软件延时Nms,适用于所有CPU
 002E           ;       参数说明:N值决定延时长度。范围为0~65536之间的整数
 002E           ;       函数作者:Haibo YU
 002E           ;       版本号:        1.0
 002E           ;       创建时间:2005-12-06
 002E           ;       修改时间:
 002E           ;       修改内容:                              */
 002E           ; void Delay_Nms(unsigned int N)
 002E           ; {
 002E                   .dbline 119
 002E           ;       unsigned int j;
 002E           ;       for( j = 0 ; j < N ; j ++ )
 002E 4427              clr R20
 0030 5527              clr R21
 0032 03C0              rjmp L11
 0034           L8:
 0034                   .dbline 120
 0034 F0DF              rcall _Delay_1ms
 0036           L9:
 0036                   .dbline 119
 0036 4F5F              subi R20,255  ; offset = 1
 0038 5F4F              sbci R21,255
 003A           L11:
 003A                   .dbline 119
 003A 4617              cp R20,R22
 003C 5707              cpc R21,R23
 003E D0F3              brlo L8
 0040                   .dbline -2
 0040                   .dbline 121
 0040           ;               Delay_1ms();
 0040           ; }
 0040           L7:
 0040 00D0              rcall pop_gset2
 0042                   .dbline 0 ; func end
 0042 0895              ret
 0044                   .dbsym r j 20 i
 0044                   .dbsym r N 22 i
 0044                   .dbend
 0044                   .dbfunc e LED _LED fV
 0044           ;              i -> R16
                        .even
 0044           _LED::
 0044                   .dbline -1
 0044                   .dbline 134
 0044           ; //*******************************************************************
 0044           ; 
 0044           ; /*    函数名:        LED
 0044           ;       功能说明:点亮/熄灭LED
 0044           ;       参数说明:0----点亮;1----熄灭
 0044           ;       函数作者:Haibo YU
 0044           ;       版本号:        1.0
 0044           ;       创建时间:2005-12-23
 0044           ;       修改时间:
 0044           ;       修改内容:                              */
 0044           ; 
 0044           ; void LED(unsigned char i)
 0044           ; {
 0044                   .dbline 135
 0044           ;       if(i == 0)
 0044 0023              tst R16

⌨️ 快捷键说明

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