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

📄 twimain.lis

📁 PTR8000无线通信模块的单片机控制程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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--sr\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--sr\twimain.c
 0002                   .dbsym e error_state _error_state c
 0002           _slave_address::
 0002                   .blkb 1
                        .area idata
 0002 C0                .byte 192
                        .area data(ram, con, rel)
 0003                   .dbfile E:\iccavr\无线+I2C\test1--sr\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--sr\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--sr\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--sr\twimain.c
 0007                   .blkb 2
                        .area idata
 0007 0203              .byte 2,3
                        .area data(ram, con, rel)
 0009                   .dbfile E:\iccavr\无线+I2C\test1--sr\twimain.c
 0009                   .dbsym e trandata _trandata A[4:4]c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\iccavr\无线+I2C\test1--sr\twimain.c
 0000                   .dbfunc e Delay_1ms _Delay_1ms fV
 0000           ;              i -> R16,R17
                        .even
 0000           _Delay_1ms::
 0000                   .dbline -1
 0000                   .dbline 39
 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=0xC0;      // 设置从机地址,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           ; //*************************** 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           ; //*************************** 延时1ms 程序 *************************************
 0000           ; //******************************************************************************
 0000           ; void Delay_1ms(void)
 0000           ; {
 0000                   .dbline 41
 0000 0027              clr R16
 0002 1127              clr R17
 0004 02C0              rjmp L5
 0006           L2:
 0006                   .dbline 41
 0006           L3:
 0006                   .dbline 41
 0006 0F5F              subi R16,255  ; offset = 1
 0008 1F4F              sbci R17,255
 000A           L5:
 000A                   .dbline 41
 000A           ;       unsigned int i;
 000A           ;       for(i = 0;i < (unsigned int)11 * 143 - 2;i ++);
 000A 0332              cpi R16,35
 000C E6E0              ldi R30,6
 000E 1E07              cpc R17,R30
 0010 D0F3              brlo L2
 0012                   .dbline -2
 0012                   .dbline 42
 0012           ; }
 0012           L1:
 0012                   .dbline 0 ; func end
 0012 0895              ret
 0014                   .dbsym r i 16 i
 0014                   .dbend
 0014                   .dbfunc e Delay_Nms _Delay_Nms fV
 0014           ;              j -> R20,R21
 0014           ;              i -> R22,R23
                        .even
 0014           _Delay_Nms::
 0014 00D0              rcall push_gset2
 0016 B801              movw R22,R16
 0018                   .dbline -1
 0018                   .dbline 46
 0018           ; //*************************** 延时1s 程序 **************************************
 0018           ; //******************************************************************************
 0018           ; void Delay_Nms(unsigned int i)
 0018           ; {
 0018                   .dbline 48
 0018           ;       unsigned int j;
 0018           ;       for(j = 0;j < i;j ++)
 0018 4427              clr R20
 001A 5527              clr R21
 001C 03C0              rjmp L10
 001E           L7:
 001E                   .dbline 49
 001E F0DF              rcall _Delay_1ms
 0020           L8:
 0020                   .dbline 48
 0020 4F5F              subi R20,255  ; offset = 1
 0022 5F4F              sbci R21,255
 0024           L10:
 0024                   .dbline 48
 0024 4617              cp R20,R22
 0026 5707              cpc R21,R23
 0028 D0F3              brlo L7
 002A                   .dbline -2
 002A                   .dbline 50
 002A           ;               Delay_1ms();
 002A           ; }
 002A           L6:
 002A 00D0              rcall pop_gset2
 002C                   .dbline 0 ; func end
 002C 0895              ret
 002E                   .dbsym r j 20 i
 002E                   .dbsym r i 22 i
 002E                   .dbend
 002E                   .dbfunc e port_init _port_init fV
                        .even
 002E           _port_init::
 002E                   .dbline -1
 002E                   .dbline 54
 002E           ; //*************************** I/O 初始化****************************************
 002E           ; //******************************************************************************
 002E           ; void port_init(void)
 002E           ; {
 002E                   .dbline 55
 002E           ;       PORTB = 0x2f;   //置PB0,PB1,PB2,PB3,PB5为1,PB4,PB6,PB7为0
 002E 8FE2              ldi R24,47
 0030 88BB              out 0x18,R24
 0032                   .dbline 56
 0032           ;       DDRB = 0x2f;    //置PB0,PB1,PB2--SS,PB3--MOSI,PB5--SCK为输出,PB4--MISO为输入
 0032 87BB              out 0x17,R24
 0034                   .dbline 57
 0034           ;       PORTC = 0x0f;   
 0034 8FE0              ldi R24,15
 0036 85BB              out 0x15,R24
 0038                   .dbline 58
 0038           ;       DDRC  = 0x0f;   //PC4--SDA,PC5--SCL为输入,PC0--PC3全为输出以便测试
 0038 84BB              out 0x14,R24
 003A                   .dbline 59
 003A           ;       PORTD = 0x05;   //置PWR,TXEN为1,  TRXCE为0
 003A 85E0              ldi R24,5
 003C 82BB              out 0x12,R24
 003E                   .dbline 60
 003E           ;       DDRD  = 0x07;   //置PD3,PD4,PD5输入;PD2--PWR,PD0--TXEN,PD1--TRXCE输出
 003E 87E0              ldi R24,7
 0040 81BB              out 0x11,R24
 0042                   .dbline -2
 0042                   .dbline 61
 0042           ; }
 0042           L11:
 0042                   .dbline 0 ; func end
 0042 0895              ret
 0044                   .dbend
 0044                   .dbfunc e uart0_init _uart0_init fV
                        .even
 0044           _uart0_init::
 0044                   .dbline -1
 0044                   .dbline 70
 0044           ; //******************************串口程序****************************************
 0044           ; //******************************************************************************

⌨️ 快捷键说明

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