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

📄 twi.lis

📁 mp3代码 要用的干净下啊 希望用东西共享啊
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module TWI.c
                        .area data(ram, con, rel)
 0000           _Twi_SendBuffer::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .blkb 1
                        .area idata
 0001 00                .byte 0
                        .area data(ram, con, rel)
 0002                   .blkb 1
                        .area idata
 0002 00                .byte 0
                        .area data(ram, con, rel)
 0003                   .blkw 1
                        .area idata
 0003 0F00              .word _Twi_SendData
                        .area data(ram, con, rel)
 0005                   .blkb 1
                        .area idata
 0005 05                .byte 5
                        .area data(ram, con, rel)
 0006                   .blkb 1
                        .area idata
 0006 00                .byte 0
                        .area data(ram, con, rel)
 0007                   .blkb 1
                        .area idata
 0007 00                .byte 0
                        .area data(ram, con, rel)
 0008                   .blkb 1
                        .area idata
 0008 00                .byte 0
                        .area data(ram, con, rel)
 0009                   .dbfile D:\桌面\mp3\TWI\TWI.c
 0009                   .dbstruct 0 9 .1
 0009                   .dbfield 0 front c
 0009                   .dbfield 1 rear c
 0009                   .dbfield 2 count c
 0009                   .dbfield 3 data pc
 0009                   .dbfield 5 queuesize c
 0009                   .dbfield 6 errorcode c
 0009                   .dbfield 7 status c
 0009                   .dbfield 8 memo c
 0009                   .dbend
 0009                   .dbsym e Twi_SendBuffer _Twi_SendBuffer S[.1]
 0009           _Twi_ReceiveBuffer::
 0009                   .blkb 1
                        .area idata
 0009 00                .byte 0
                        .area data(ram, con, rel)
 000A                   .dbfile D:\桌面\mp3\TWI\TWI.c
 000A                   .blkb 1
                        .area idata
 000A 00                .byte 0
                        .area data(ram, con, rel)
 000B                   .dbfile D:\桌面\mp3\TWI\TWI.c
 000B                   .blkb 1
                        .area idata
 000B 00                .byte 0
                        .area data(ram, con, rel)
 000C                   .dbfile D:\桌面\mp3\TWI\TWI.c
 000C                   .blkw 1
                        .area idata
 000C 0A00              .word _Twi_ReceiveData
                        .area data(ram, con, rel)
 000E                   .dbfile D:\桌面\mp3\TWI\TWI.c
 000E                   .blkb 1
                        .area idata
 000E 05                .byte 5
                        .area data(ram, con, rel)
 000F                   .dbfile D:\桌面\mp3\TWI\TWI.c
 000F                   .blkb 1
                        .area idata
 000F 00                .byte 0
                        .area data(ram, con, rel)
 0010                   .dbfile D:\桌面\mp3\TWI\TWI.c
 0010                   .blkb 1
                        .area idata
 0010 00                .byte 0
                        .area data(ram, con, rel)
 0011                   .dbfile D:\桌面\mp3\TWI\TWI.c
 0011                   .blkb 1
                        .area idata
 0011 00                .byte 0
                        .area data(ram, con, rel)
 0012                   .dbfile D:\桌面\mp3\TWI\TWI.c
 0012                   .dbsym e Twi_ReceiveBuffer _Twi_ReceiveBuffer S[.1]
 0012           _Twi_LocalBuffer::
 0012                   .blkb 1
                        .area idata
 0012 00                .byte 0
                        .area data(ram, con, rel)
 0013                   .dbfile D:\桌面\mp3\TWI\TWI.c
 0013                   .blkb 1
                        .area idata
 0013 00                .byte 0
                        .area data(ram, con, rel)
 0014                   .dbfile D:\桌面\mp3\TWI\TWI.c
 0014                   .blkb 1
                        .area idata
 0014 00                .byte 0
                        .area data(ram, con, rel)
 0015                   .dbfile D:\桌面\mp3\TWI\TWI.c
 0015                   .blkw 1
                        .area idata
 0015 0500              .word _LocalBuffer
                        .area data(ram, con, rel)
 0017                   .dbfile D:\桌面\mp3\TWI\TWI.c
 0017                   .blkb 1
                        .area idata
 0017 05                .byte 5
                        .area data(ram, con, rel)
 0018                   .dbfile D:\桌面\mp3\TWI\TWI.c
 0018                   .blkb 1
                        .area idata
 0018 00                .byte 0
                        .area data(ram, con, rel)
 0019                   .dbfile D:\桌面\mp3\TWI\TWI.c
 0019                   .blkb 1
                        .area idata
 0019 00                .byte 0
                        .area data(ram, con, rel)
 001A                   .dbfile D:\桌面\mp3\TWI\TWI.c
 001A                   .blkb 1
                        .area idata
 001A 00                .byte 0
                        .area data(ram, con, rel)
 001B                   .dbfile D:\桌面\mp3\TWI\TWI.c
 001B                   .dbsym e Twi_LocalBuffer _Twi_LocalBuffer S[.1]
                        .area text(rom, con, rel)
 0000                   .dbfile D:\桌面\mp3\TWI\TWI.c
 0000                   .dbfunc e Delay _Delay fV
 0000           ;              i -> R20
 0000           ;              n -> R16
                        .even
 0000           _Delay::
 0000 0E940000          xcall push_gset1
 0004                   .dbline -1
 0004                   .dbline 92
 0004           ; /*********************************************************************************************************
 0004           ; **                                                                   TWI 驱动程序
 0004           ; **                                  (c) Copyright 2006-2008, limaokui
 0004           ; **                                           All Rights Reserved
 0004           ; **
 0004           ; **                                             V1.0.0
 0004           ; **
 0004           ; **
 0004           ; **--------------文件信息--------------------------------------------------------------------------------
 0004           ; **文   件   名:TWI.h
 0004           ; **创   建   人: 李茂奎
 0004           ; **最后修改日期:  2006年8月29日
 0004           ; **描        述:  TWI驱动程序
 0004           ; **
 0004           ; **--------------历史版本信息----------------------------------------------------------------------------
 0004           ; ** 创建人: 李茂奎
 0004           ; ** 版  本: V1.00
 0004           ; ** 日 期: 2006年8月29日
 0004           ; ** 描 述: 原始版本
 0004           ; **
 0004           ; **------------------------------------------------------------------------------------------------------
 0004           ; ** 修改人: 李茂奎
 0004           ; ** 版  本:
 0004           ; ** 日 期:
 0004           ; ** 描 述: 
 0004           ; **
 0004           ; **--------------当前版本修订------------------------------------------------------------------------------
 0004           ; ** 修改人:    李茂奎                                                                                                                                                                    
 0004           ; ** 日 期:     2006年9月1日
 0004           ; ** 描 述:   
 0004           ; **
 0004           ; **------------------------------------------------------------------------------------------------------
 0004           ; *********************************************************************************************************/
 0004           ; /*
 0004           ; 说明:1、本驱动程序已经实现了TWI中断通讯的四种模式:MT、MR、ST、SR。
 0004           ;      2、MT方式调用Twi_MasterSend()函数,用到了Twi_SendBuffer队列,
 0004           ;               最大单次发送255Btye,理论上两次发送间隔5MS以上。
 0004           ;        3、MR方式调用Twi_MasterRecive()函数,用到了Twi_ReceiveBuffer队列,
 0004           ;               最大单次发送255Btye,理论上两次发送间隔5MS以上。
 0004           ;        4、SR方式用户不必关心何时中断,在中断结束后,调用Twi_SlaveReceiveService()函数,
 0004           ;           此函数将接收到的数据传给上层缓冲区Twi_LocalBuffer,用到了Twi_ReceiveBuffer、Twi_LocalBuffer队列,
 0004           ;               最大单次发送255Btye。上层程序仅需检测Twi_LocalBuffer中的status即可,即若status值
 0004           ;               TWI_DATA_READY,就可以读取数据,读完后设置LocalBuffer的Status为TWI_DATA_FREE。
 0004           ;        5、ST方式用户不必关心何时中断,在中断结束后,调用Twi_TransmintReceiveService()函数S玫搅薚wi_ReceiveBuffer、Twi_LocalBuffer队列,
 0004           ;           如果想使能从机发送则可将要发数据传入LocalBuffer中并设置Status为TWI_DATA_SEND,在写
 0004           ;               LocalBuffer之前,应检测STATUS是否为Status为TWI_DATA_FREE。
 0004           ;        6、非中断模式的接收发送没有经过验证。使用时请注意。
 0004           ;        7、使用时首先调用TwiInit()进行初始化,(循环队列的长度可以自己修改对应的数组和结构中的queuesize),
 0004           ;           然后打开中断即可。对于不同的单片机,此驱动中通过定义CPU_TYPE实现切换。对应的定义在config中。
 0004           ; */
 0004           ; #include "config.h"
 0004           ; // Twi标准波特率: 
 0004           ; // 低速 100KHz  
 0004           ; // 高速 400KHz  
 0004           ; 
 0004           ; // Twi_ 状态和地址变量 
 0004           ; static volatile eTwi_StateType Twi_State; // 用于独占TWI的资源分配的信号量机制
 0004           ; static volatile uint8 Twi_DeviceAddrRW; 
 0004           ; // 发送缓冲区 
 0004           ; static uint8 Twi_SendData[TWI_SEND_DATA_BUFFER_SIZE]; 
 0004           ; CirQueue Twi_SendBuffer={0,0,0,Twi_SendData,TWI_SEND_DATA_BUFFER_SIZE,QUEUE_OK,TWI_DATA_FREE,0};  
 0004           ; // 接收缓冲区 
 0004           ; static uint8 Twi_ReceiveData[TWI_RECEIVE_DATA_BUFFER_SIZE]; 
 0004           ; CirQueue Twi_ReceiveBuffer={0,0,0,(uint8 *)Twi_ReceiveData,TWI_RECEIVE_DATA_BUFFER_SIZE,QUEUE_OK,TWI_DATA_FREE,0};  
 0004           ; //本地缓冲区,当为从机时,与TWI接口
 0004           ; static uint8 LocalBuffer[TWI_LOCAL_DATA_BUFFER_SIZE];
 0004           ; CirQueue Twi_LocalBuffer={0,0,0,LocalBuffer,TWI_LOCAL_DATA_BUFFER_SIZE,QUEUE_OK,TWI_DATA_FREE,0};  
 0004           ; //错误代码
 0004           ; static volatile uint8 TwiErrorCode;
 0004           ; 
 0004           ; // 指向接收处理函数的指针,当本机被选中从接收时调用函数:Twi_SlaveReceive 
 0004           ; static void (*Twi_SlaveReceive)(uint8 receiveDataLength, uint8* recieveData); 
 0004           ; // 指向发送处理函数的指针,当本机被选中从发送时调用函数:ITwi_SlaveTransmit  
 0004           ; static uint8 (*Twi_SlaveTransmit)(uint8 transmitDataLengthMax, uint8* transmitData); 
 0004           ; 
 0004           ; 
 0004           ; 
 0004           ; /*************************************************************************************
 0004           ; **延时公式
 0004           ; **  i*500-100 US  (8>i>2)
 0004           ; **  i*500         (255>i>8)
 0004           ; ** i=1精确延时100us
 0004           ; ** i=2 精确延时660US
 0004           ; ** i=6 精确延时2.9ms
 0004           ; ** i=10 精确延时5ms
 0004           ; ** i=20        10ms
 0004           ; ** i=100       50ms
 0004           ; ** i=200       100ms
 0004           ; ** i=255       128ms
 0004           ; **************************************************************************************/
 0004           ; void Delay(uint8 n)
 0004           ; {
 0004                   .dbline 94
 0004           ;       uint8 i;
 0004           ;       for(i=36;n!=0;n--)      
 0004 44E2              ldi R20,36
 0006 07C0              xjmp L11
 0008           X0:
 0008                   .dbline 95
 0008           ;       {
 0008           L12:
 0008                   .dbline 96
 0008           L13:
 0008                   .dbline 96
 0008 842F              mov R24,R20
 000A 8150              subi R24,1
 000C 482F              mov R20,R24
 000E 8823              tst R24
 0010 D9F7              brne L12
 0012                   .dbline 97
 0012 A895              wdr
 0014                   .dbline 98
 0014           L9:
 0014                   .dbline 94
 0014 0A95              dec R16
 0016           L11:
 0016                   .dbline 94
 0016 0023              tst R16
 0018 B9F7              brne L13
 001A                   .dbline -2
 001A           L7:
 001A 0E940000          xcall pop_gset1
 001E                   .dbline 0 ; func end
 001E 0895              ret
 0020                   .dbsym r i 20 c
 0020                   .dbsym r n 16 c
 0020                   .dbend
 0020                   .dbfunc e Twi_SetBitrate _Twi_SetBitrate fV
 0020           ;    bitrate_div -> R10
 0020           ;     bitrateKHz -> R10,R11
                        .even
 0020           _Twi_SetBitrate::
 0020 0E940000          xcall push_gset3
 0024 5801              movw R10,R16
 0026                   .dbline -1
 0026                   .dbline 111
 0026           ;       while(--i);
 0026           ;       WDR(); //喂狗;
 0026           ;       }
 0026           ; }
 0026           ; /*********************************************************************************************************
 0026           ; ** 函数名称:Twi_SetBitrate
 0026           ; ** 功能描述:设置TWI总线的速率
 0026           ; ** 输 入:  bitrateKHZ : 总线速率
 0026           ; ** 输  出:             
 0026           ; ** 全局变量: 
 0026           ; ** 调用模块: 无
 0026           ; ** 说明:
 0026           ; ** 注意:    
 0026           ; ** 日 期:   2006年8月29日
 0026           ; ********************************************************************************************************/
 0026           ; void Twi_SetBitrate(uint16 bitrateKHz){ 
 0026                   .dbline 113
 0026           ;    uint8 bitrate_div;
 0026           ;    WDR(); //喂狗; 
 0026 A895              wdr
 0028                   .dbline 119
 0028           ;    // SCL freq = F_CPU/(16+2*TWBR)) 
 0028           ;    #ifdef TWPS0 
 0028           ;       // 对于用速率分频的AVR (mega128) 
 0028           ;       // SCL freq = F_CPU/(16+2*TWBR*4^TWPS) 
 0028           ;       // set TWPS to zero 
 0028           ;       TWSR&=~(1<<TWPS0); 
 0028 0898              cbi 0x1,0
 002A                   .dbline 120
 002A           ;       TWSR&=~(1<<TWPS1); 
 002A 0998              cbi 0x1,1
 002C                   .dbline 123
 002C           ;    #endif 
 002C           ;    // 计算分频 
 002C           ;    bitrate_div = ((F_CPU/1000)/bitrateKHz); 

⌨️ 快捷键说明

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