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

📄 lcd1602pbpd.lis

📁 一些LCD库 分享给大家了 哈哈~
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 029C           ; 注意事项:
 029C           ; 提示说明:
 029C           ; 输    入:wrDAdr: write device-address 写器件地址
 029C           ;                wordAdr: word address 字地址
 029C           ;                rdDAdr: read device-address 读器件地址
 029C           ;                *pRdDat: p->read data 读取数据指针
 029C           ;                num: number 读取数据个数
 029C           ; 返    回:
 029C           ; --------------------------------------------------------------------*/
 029C           ; bool I2C_Read_(uint16 wrDAdr,uint8 wordAdr,
 029C           ;                          uint8 rdDAdr,uint8 *pRdDat,uint8 num)
 029C           ; {
 029C           ;       uint8 i;
 029C           ;       
 029C           ;       if( I2C_Start()==I2C_ERR )
 029C 0BDF              xcall _I2C_Start
 029E 0023              tst R16
 02A0 11F4              brne L85
 02A2           X32:
 02A2           ; 		return I2C_ERR;
 02A2 0027              clr R16
 02A4 38C0              xjmp L84
 02A6           L85:
 02A6           ; 
 02A6           ; 	if( I2C_SendWrDAdr_(wrDAdr)==I2C_ERR )
 02A6 8701              movw R16,R14
 02A8 2DDF              xcall _I2C_SendWrDAdr_
 02AA 0023              tst R16
 02AC 11F4              brne L87
 02AE           X33:
 02AE           ; 		return I2C_ERR;
 02AE 0027              clr R16
 02B0 32C0              xjmp L84
 02B2           L87:
 02B2           ; 
 02B2           ; 	if( I2C_SendDat(wordAdr)==I2C_ERR )
 02B2 0C2D              mov R16,R12
 02B4 6DDF              xcall _I2C_SendDat
 02B6 C02E              mov R12,R16
 02B8 0023              tst R16
 02BA 11F4              brne L89
 02BC           X34:
 02BC           ; 		return I2C_ERR;
 02BC 0027              clr R16
 02BE 2BC0              xjmp L84
 02C0           L89:
 02C0           ; 
 02C0           ; 	if( I2C_Restart()==I2C_ERR )
 02C0 06DF              xcall _I2C_Restart
 02C2 C02E              mov R12,R16
 02C4 0023              tst R16
 02C6 11F4              brne L91
 02C8           X35:
 02C8           ; 		return I2C_ERR;
 02C8 0027              clr R16
 02CA 25C0              xjmp L84
 02CC           L91:
 02CC           ; 
 02CC           ; 	if( I2C_SendRdDAdr(rdDAdr)==I2C_ERR )
 02CC 0E81              ldd R16,y+6
 02CE 37DF              xcall _I2C_SendRdDAdr
 02D0 C02E              mov R12,R16
 02D2 0023              tst R16
 02D4 11F4              brne L93
 02D6           X36:
 02D6           ; 		return I2C_ERR;
 02D6 0027              clr R16
 02D8 1EC0              xjmp L84
 02DA           L93:
 02DA           ; 
 02DA           ; 	for(i=0;i<num-1;i++)
 02DA CC24              clr R12
 02DC 0BC0              xjmp L98
 02DE           L95:
 02DE           ; 		if( I2C_RcvAckDat(pRdDat+i)==I2C_ERR )
 02DE 0C2D              mov R16,R12
 02E0 1127              clr R17
 02E2 0A0D              add R16,R10
 02E4 1B1D              adc R17,R11
 02E6 72DF              xcall _I2C_RcvAckDat
 02E8 E02E              mov R14,R16
 02EA 0023              tst R16
 02EC 11F4              brne L99
 02EE           X37:
 02EE           ; 			return I2C_ERR;
 02EE 0027              clr R16
 02F0 12C0              xjmp L84
 02F2           L99:
 02F2           L96:
 02F2 C394              inc R12
 02F4           L98:
 02F4 8A85              ldd R24,y+10
 02F6 8150              subi R24,1
 02F8 C816              cp R12,R24
 02FA 88F3              brlo L95
 02FC           X38:
 02FC           ; 	
 02FC           ; 	if( I2C_RcvNAckDat(pRdDat+i)==I2C_ERR )
 02FC 0C2D              mov R16,R12
 02FE 1127              clr R17
 0300 0A0D              add R16,R10
 0302 1B1D              adc R17,R11
 0304 53DF              xcall _I2C_RcvNAckDat
 0306 A02E              mov R10,R16
 0308 0023              tst R16
 030A 11F4              brne L101
 030C           X39:
 030C           ; 			return I2C_ERR;
 030C 0027              clr R16
 030E 03C0              xjmp L84
 0310           L101:
 0310           ; 
 0310           ; 	I2C_Stop();
 0310 84E9              ldi R24,148
 0312 86BF              out 0x36,R24
 0314           ;       
 0314           ;       return I2C_CRR;
 0314 01E0              ldi R16,1
 0316           L84:
 0316                   .dbline 0 ; func end
 0316 0C940000          xjmp pop_xgset00FC
 031A           ;              j -> R20
 031A           ;              t -> R16,R17
                        .even
 031A           _delay50us::
 031A 4A93              st -y,R20
 031C           ; /*********************************************************************
 031C           ;       微 雪 电 子   WaveShare   http://www.waveShare.net              
 031C           ;                                                                       
 031C           ; 目    的:   建立AVR的硬件提取库,增加各类补丁,方便移植
 031C           ;                                       
 031C           ; 目标系统:   基于AVR单片机
 031C           ;                                                                               
 031C           ; 应用软件:   ICCAVR
 031C           ;                                                                               
 031C           ; 版    本:   Version 1.0                                                          
 031C           ;                                                                               
 031C           ; 圆版时间:   2005-06-25
 031C           ;       
 031C           ; 开发人员:   SEE
 031C           ; 
 031C           ; 说    明:   若用于商业用途,请保留此段文字或注明代码来源
 031C           ;       
 031C           ;       深 圳 市 微 雪 电 子 有 限 公 司 保 留 所 有 的 版 权     
 031C           ; *********************************************************************/
 031C           ; 
 031C           ; /*01010101010101010101010101010101010101010101010101010101010101010101
 031C           ; ----------------------------------------------------------------------
 031C           ; 版本更新记录:
 031C           ; 
 031C           ; ----------------------------------------------------------------------
 031C           ; 入口参数说明:
 031C           ; 
 031C           ; ----------------------------------------------------------------------
 031C           ; 待定参数说明:
 031C           ; 
 031C           ; ----------------------------------------------------------------------        
 031C           ; 对外变量说明:
 031C           ;     
 031C           ; ----------------------------------------------------------------------
 031C           ; 对外函数说明:
 031C           ;    
 031C           ; ----------------------------------------------------------------------
 031C           ; 10101010101010101010101010101010101010101010101010101010101010101010*/
 031C           ; 
 031C           ; #ifndef Hardware_H
 031C           ; #define Hardware_H
 031C           ; 
 031C           ; #include <math.h>
 031C           ; #include <string.h>
 031C           ; #include <stdio.h>
 031C           ; #include <macros.h>
 031C           ; #include <eeprom.h>
 031C           ; //#include <wdt.h>
 031C           ; 
 031C           ; /* TWI configs */
 031C           ; //如使用ATMEGA162(没有TWI接口)之类的MCU,在加载Hardware.H前,务必加“#define NO_INCLUDE_I2C_H 1”语句
 031C           ; #if NO_INCLUDE_I2C_H
 031C           ; ;
 031C           ; #else
 031C           ; #include "D:\ICC_H\I2C.H"     //i2c即AVR的"twi"
 031C           ; #endif
 031C           ; 
 031C           ; /* hard configs */
 031C           ; #ifndef flash
 031C           ;       #define flash   const
 031C           ; #endif
 031C           ; 
 031C           ; #ifndef code
 031C           ;       #define code    const
 031C           ; #endif
 031C           ; 
 031C           ; #ifndef NOP
 031C           ;       #define NOP()   asm("nop")
 031C           ; #endif
 031C           ; 
 031C           ; /* io configs */
 031C           ; #define sbi(io,bit)           (  io |=  (1<<bit) )    //example: sbi(PORTA,0);sbi(DDRA,0);
 031C           ; #define cbi(io,bit)           (  io &= ~(1<<bit) )    //example: cbi(PORTA,0);cbi(DDRA,0);
 031C           ; #define gbi(pin ,bit) ( pin &   (1<<bit) )    //example: gbi(PINA,0);
 031C           ; 
 031C           ; /* interrupt configs */
 031C           ; #define DIS_INT  asm("sei")
 031C           ; #define EN_INT   asm("cli")
 031C           ; 
 031C           ; /* wdt configs */
 031C           ; #define WDT()    asm("wdr")
 031C           ; 
 031C           ; /* bit operation */
 031C           ; //#ifndef BIT
 031C           ; //#define BIT(x)      ( 1<<(x) )
 031C           ; //#endif
 031C           ; 
 031C           ; /* USART configs for 4 Mhz crystal */
 031C           ; //#define BAUD9600                    25
 031C           ; //#define BAUD19000                   12
 031C           ; //#define UART_TRAN_ON()      UCR |=  0x08
 031C           ; //#define UART_TRAN_OFF()     UCR &= ~0x08
 031C           ; //#define UART_RCV_ON()               UCR |=  0x10
 031C           ; //#define UART_RCV_OFF()      UCR &= ~0x10
 031C           ; 
 031C           ; /*--------------------------------------------------------------------
 031C           ; 函数全称:50us 延时
 031C           ; 函数功能:当然是 50us延时 啦
 031C           ; 注意事项:基于7.3728M晶振,稍微有点误差
 031C           ; 提示说明:调用delay50us(20),得到1ms延时
 031C           ; 输    入:    
 031C           ; 返    回:无 
 031C           ; --------------------------------------------------------------------*/
 031C           ; void delay50us(sint16 t)
 031C           ; {
 031C           ;     uint8 j;          
 031C           ;     for(;t>0;t--)                     
 031C 07C0              xjmp L107
 031E           L104:
 031E           ;         for(j=0;j<70;j++)	
 031E 4427              clr R20
 0320 01C0              xjmp L111
 0322           L108:
 0322           ;             ;
 0322           L109:
 0322 4395              inc R20
 0324           L111:
 0324 4634              cpi R20,70
 0326 E8F3              brlo L108
 0328           X40:
 0328           L105:
 0328 0150              subi R16,1
 032A 1040              sbci R17,0
 032C           L107:
 032C 2224              clr R2
 032E 3324              clr R3
 0330 2016              cp R2,R16
 0332 3106              cpc R3,R17
 0334 A4F3              brlt L104
 0336           X41:
 0336           L103:
 0336                   .dbline 0 ; func end
 0336 4991              ld R20,y+
 0338 0895              ret
 033A           ;              i -> R20,R21
 033A           ;              t -> R16,R17
                        .even
 033A           _delay50ms::
 033A 4A93              st -y,R20
 033C 5A93              st -y,R21
 033E           ; }
 033E           ; /*--------------------------------------------------------------------
 033E           ; 函数全称:50ms 延时
 033E           ; 函数功能:当然是 50ms延时 啦
 033E           ; 注意事项:基于7.3728M晶振,稍微有点误差
 033E           ; 提示说明:调用delay50ms(20),得到1s延时 
 033E           ; 输    入:
 033E           ; 返    回:无
 033E           ; --------------------------------------------------------------------*/
 033E           ; void delay50ms(sint16 t)
 033E           ; {
 033E           ;       uint16 i; 
 033E           ;       for(;t>0;t--)
 033E 13C0              xjmp L116
 0340           L113:
 0340           ; 		for(i=0;i<52642;i++)
 0340 4427              clr R20
 0342 5527              clr R21
 0344 02C0              xjmp L120
 0346           L117:
 0346           ; 			; 
 0346           L118:
 0346 4F5F              subi R20,255  ; offset = 1
 0348 5F4F              sbci R21,255
 034A           L120:
 034A 82EA              ldi R24,162
 034C 9DEC              ldi R25,205
 034E A0E0              ldi R26,0
 0350 B0E0              ldi R27,0
 0352 1A01              movw R2,R20
 0354 4424              clr R4
 0356 5524              clr R5
 0358 2816              cp R2,R24
 035A 3906              cpc R3,R25
 035C 4A06              cpc R4,R26
 035E 5B06              cpc R5,R27
 0360 94F3              brlt L117
 0362           X42:
 0362           L114:
 0362 0150              subi R16,1
 0364 1040              sbci R17,0
 0366           L116:
 0366 2224              clr R2
 0368 3324              clr R3
 036A 2016              cp R2,R16
 036C 3106              cpc R3,R17
 036E 44F3              brlt L113
 0370           X43:
 0370           L112:

⌨️ 快捷键说明

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