📄 twimain.lis
字号:
.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 + -