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

📄 lcd1602pbpd.lis

📁 一些LCD库 分享给大家了 哈哈~
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module Lcd1602PBPD.C
                        .area text(rom, con, rel)
                ;              y -> y+4
                ;              j -> y+0
                ;              i -> R10
                ;            len -> y+18
                ;            dat -> y+14
                        .even
 0000           _speaData::
 0000 0E940000          xcall push_arg4
 0004 0E940000          xcall push_xgsetF00C
 0008 2897              sbiw R28,8
 000A           ; /*********************************************************************
 000A           ;       微 雪 电 子   WaveShare   http://www.waveShare.net              
 000A           ;                                                                       
 000A           ; 目    的:   建立AVR的软件提取库,增加各类补丁,方便系统程序移植
 000A           ;       
 000A           ; 目标系统:   基于AVR单片机
 000A           ;                                                                               
 000A           ; 应用软件:   ICCAVR
 000A           ;                                                                               
 000A           ; 版    本:   Version 1.0                                                       
 000A           ;                                                                               
 000A           ; 圆版时间:   2005-06-25
 000A           ;       
 000A           ; 开发人员:   SEE
 000A           ; 
 000A           ; 说    明:   若用于商业用途,请保留此段文字或注明代码来源
 000A           ;       
 000A           ;       深 圳 市 微 雪 电 子 有 限 公 司 保 留 所 有 的 版 权     
 000A           ; *********************************************************************/
 000A           ; 
 000A           ; /*01010101010101010101010101010101010101010101010101010101010101010101
 000A           ; ----------------------------------------------------------------------
 000A           ; 版本更新记录:
 000A           ; 
 000A           ; ----------------------------------------------------------------------
 000A           ; 入口参数说明:
 000A           ; 
 000A           ; ----------------------------------------------------------------------
 000A           ; 待定参数说明:
 000A           ; 
 000A           ; ----------------------------------------------------------------------        
 000A           ; 对外变量说明:
 000A           ;     
 000A           ; ----------------------------------------------------------------------
 000A           ; 对外函数说明:
 000A           ;    
 000A           ; ----------------------------------------------------------------------
 000A           ; 10101010101010101010101010101010101010101010101010101010101010101010*/
 000A           ; 
 000A           ; #ifndef Software_H
 000A           ; #define Software_H
 000A           ; 
 000A           ; #include <math.h>
 000A           ; #include <string.h>
 000A           ; 
 000A           ; /* 兼容一般程序员的常用写法 */
 000A           ; typedef unsigned char uchar;
 000A           ; typedef unsigned int  uint;
 000A           ; typedef unsigned long ulong;
 000A           ; typedef signed char           schar;
 000A           ; typedef signed int            sint;
 000A           ; typedef signed long           slong;
 000A           ; 
 000A           ; /* 为方便移植,建议使用下面写法 */
 000A           ; typedef unsigned char bool;
 000A           ; typedef unsigned char uint8;
 000A           ; typedef unsigned int  uint16;
 000A           ; typedef unsigned long   uint32;
 000A           ; typedef signed  char  sint8;
 000A           ; typedef signed        int             sint16;
 000A           ; typedef signed        long    sint32;
 000A           ; typedef signed  char  int8;
 000A           ; typedef signed  int           int16;
 000A           ; typedef signed  long  int32;
 000A           ; 
 000A           ; /* 下面写法一般不推荐 */
 000A           ; //typedef unsigned char ubyte;
 000A           ; //typedef unsigned int        uword;
 000A           ; //typedef unsigned long udword;
 000A           ; //typedef signed   char       sbyte;
 000A           ; //typedef signed   int        sword;
 000A           ; //typedef signed   long       sdword;
 000A           ; 
 000A           ; /* 一般程序定义的默认值 */
 000A           ; //#define NULL                        0
 000A           ; //#define EOF                 -1
 000A           ; //#define TRUE                1
 000A           ; //#define FALSE               0
 000A           ; //#define YES                 1
 000A           ; //#define NO                          0
 000A           ; //#define ON                  1
 000A           ; //#define OFF                 0
 000A           ; //#define ENABLE              1
 000A           ; //#define DISABLE             0
 000A           ; //#define CRR                 1
 000A           ; //#define ERR                 0
 000A           ; //#define RIGHT                       1
 000A           ; //#define WRONG                       0
 000A           ; //#define SUCCESS             1
 000A           ; //#define FAILURE             0
 000A           ; //#define PI                  3.1415926       //3.1415926535897932
 000A           ; 
 000A           ; /* 如果你手头上的RAM实在很紧,不如尝试下面的define~ */
 000A           ; //#define _CALLOC(a)          ( (a *)calloc(n,sizeof(a)) )
 000A           ; //#define _MALLOC(a)          ( (a *)malloc(sizeof(a)) )
 000A           ; //#define _MIN(a,b)                   ( (a) < (b) ? (a) : (b) )
 000A           ; //#define _MAX(a,b)                   ( (a) > (b) ? (a) : (b) )
 000A           ; //#define _EXCHANGE(a,b)      { int t; t=a; a=b; b=t; }
 000A           ; //#define _TOLOWER(c)         ( (c)+32 )
 000A           ; //#define _TOUPPER(c)         ( (c)-32 )
 000A           ; 
 000A           ; //#ifndef BIT
 000A           ; //#define BIT(x)      ( 1<<(x) )
 000A           ; //#endif
 000A           ; 
 000A           ; /*--------------------------------------------------------------------
 000A           ; 函数全称:数据拆字
 000A           ; 函数功能:
 000A           ; 注意事项:D<=999999,C<=6
 000A           ; 提示说明:调用speaData(12,2),得到dataElem[0]=2,dataElem[1]=1
 000A           ; 输    入:
 000A           ; 返    回:无
 000A           ; --------------------------------------------------------------------*/
 000A           ; uint8 dataElem[6];
 000A           ; void speaData(uint32 dat,sint8 len)
 000A           ; {
 000A           ;     uint8 i;
 000A           ;     uint32 j,y;
 000A           ;     for(i=0,j=1;i<len;i++)
 000A AA24              clr R10
 000C 41E0              ldi R20,1
 000E 50E0              ldi R21,0
 0010 60E0              ldi R22,0
 0012 70E0              ldi R23,0
 0014 4883              std y+0,R20
 0016 5983              std y+1,R21
 0018 6A83              std y+2,R22
 001A 7B83              std y+3,R23
 001C 3CC0              xjmp L5
 001E           L2:
 001E           ;     {
 001E           ;         y=dat/j;
 001E 2880              ldd R2,y+0
 0020 3980              ldd R3,y+1
 0022 4A80              ldd R4,y+2
 0024 5B80              ldd R5,y+3
 0026 0E85              ldd R16,y+14
 0028 1F85              ldd R17,y+15
 002A 2889              ldd R18,y+16
 002C 3989              ldd R19,y+17
 002E 5A92              st -y,R5
 0030 4A92              st -y,R4
 0032 3A92              st -y,R3
 0034 2A92              st -y,R2
 0036 0E940000          xcall div32u
 003A 0C83              std y+4,R16
 003C 1D83              std y+5,R17
 003E 2E83              std y+6,R18
 0040 3F83              std y+7,R19
 0042           ;         dataElem[i]=y%10;
 0042 4AE0              ldi R20,10
 0044 50E0              ldi R21,0
 0046 60E0              ldi R22,0
 0048 70E0              ldi R23,0
 004A 0C81              ldd R16,y+4
 004C 1D81              ldd R17,y+5
 004E 2E81              ldd R18,y+6
 0050 3F81              ldd R19,y+7
 0052 7A93              st -y,R23
 0054 6A93              st -y,R22
 0056 5A93              st -y,R21
 0058 4A93              st -y,R20
 005A 0E940000          xcall mod32u
 005E 80E0              ldi R24,<_dataElem
 0060 90E0              ldi R25,>_dataElem
 0062 EA2D              mov R30,R10
 0064 FF27              clr R31
 0066 E80F              add R30,R24
 0068 F91F              adc R31,R25
 006A 0083              std z+0,R16
 006C           ;         j*=10;
 006C 2880              ldd R2,y+0
 006E 3980              ldd R3,y+1
 0070 4A80              ldd R4,y+2
 0072 5B80              ldd R5,y+3
 0074 4AE0              ldi R20,10
 0076 50E0              ldi R21,0
 0078 60E0              ldi R22,0
 007A 70E0              ldi R23,0
 007C 5A92              st -y,R5
 007E 4A92              st -y,R4
 0080 3A92              st -y,R3
 0082 2A92              st -y,R2
 0084 8A01              movw R16,R20
 0086 9B01              movw R18,R22
 0088 0E940000          xcall empy32u
 008C 0883              std y+0,R16
 008E 1983              std y+1,R17
 0090 2A83              std y+2,R18
 0092 3B83              std y+3,R19
 0094           ;     }
 0094           L3:
 0094 A394              inc R10
 0096           L5:
 0096 2A88              ldd R2,y+18
 0098 3324              clr R3
 009A 27FC              sbrc R2,7
 009C 3094              com R3
 009E 4A2C              mov R4,R10
 00A0 5524              clr R5
 00A2 4214              cp R4,R2
 00A4 5304              cpc R5,R3
 00A6 0CF4              brge X1
 00A8 BACF              xjmp L2
 00AA           X1:
 00AA           X0:
 00AA           L1:
 00AA                   .dbline 0 ; func end
 00AA 2896              adiw R28,8
 00AC 0E940000          xcall pop_xgsetF00C
 00B0 2496              adiw R28,4
 00B2 0895              ret
                        .even
 00B4           _I2C_Start::
 00B4           ; /*********************************************************************
 00B4           ; 	微 雪 电 子   WaveShare   http://www.waveShare.net            	
 00B4           ; 		                                                        
 00B4           ; 目    的:   建立I2C操作库
 00B4           ; 	
 00B4           ; 目标系统:   基于AVR单片机
 00B4           ; 		                                                                
 00B4           ; 应用软件:   ICCAVR
 00B4           ; 		                                                                
 00B4           ; 版    本:   Version 1.0                                                          
 00B4           ; 		                                                                
 00B4           ; 圆版时间:   2005-06-25
 00B4           ; 	
 00B4           ; 开发人员:   SEE
 00B4           ; 
 00B4           ; 说    明:   若用于商业用途,请保留此段文字或注明代码来源
 00B4           ; 	
 00B4           ; 	深 圳 市 微 雪 电 子 有 限 公 司 保 留 所 有 的 版 权     
 00B4           ; *********************************************************************/
 00B4           ; 
 00B4           ; /*01010101010101010101010101010101010101010101010101010101010101010101
 00B4           ; ----------------------------------------------------------------------
 00B4           ; 版本更新记录:
 00B4           ; 
 00B4           ; ----------------------------------------------------------------------
 00B4           ; 入口参数说明:
 00B4           ; 
 00B4           ; ----------------------------------------------------------------------
 00B4           ; 待定参数说明:
 00B4           ; 
 00B4           ; ----------------------------------------------------------------------	
 00B4           ; 对外变量说明:
 00B4           ; 
 00B4           ; ----------------------------------------------------------------------
 00B4           ; 对外函数说明:
 00B4           ; 
 00B4           ; ----------------------------------------------------------------------
 00B4           ; 10101010101010101010101010101010101010101010101010101010101010101010*/
 00B4           ; 
 00B4           ; #ifndef I2C_H
 00B4           ; #define I2C_H
 00B4           ; 
 00B4           ; #include "D:\ICC_H\CmmICC.H"
 00B4           ; 
 00B4           ; /* TWSR values (not bits) */
 00B4           ; /* Master */
 00B4           ; #define I2C_START			0x08
 00B4           ; #define I2C_RESTART			0x10
 00B4           ; 
 00B4           ; /* Master Transmitter */
 00B4           ; #define I2C_MT_SLA_ACK		0x18
 00B4           ; #define I2C_MT_SLA_NACK		0x20
 00B4           ; #define I2C_MT_DATA_ACK		0x28
 00B4           ; #define I2C_MT_DATA_NACK	0x30
 00B4           ; #define I2C_MT_ARB_LOST		0x38
 00B4           ; 
 00B4           ; /* Master Receiver */
 00B4           ; #define I2C_MR_ARB_LOST		0x38
 00B4           ; #define I2C_MR_SLA_ACK		0x40
 00B4           ; #define I2C_MR_SLA_NACK		0x48
 00B4           ; #define I2C_MR_DATA_ACK		0x50
 00B4           ; #define I2C_MR_DATA_NACK	0x58
 00B4           ; 
 00B4           ; /* Slave Transmitter */
 00B4           ; #define I2C_ST_SLA_ACK			0xA8
 00B4           ; #define I2C_ST_ARB_LOST_SLA_ACK 0xB0
 00B4           ; #define I2C_ST_DATA_ACK			0xB8
 00B4           ; #define I2C_ST_DATA_NACK		0xC0
 00B4           ; #define I2C_ST_LAST_DATA		0xC8
 00B4           ; 
 00B4           ; /* Slave Receiver */
 00B4           ; #define I2C_SR_SLA_ACK				0x60
 00B4           ; #define I2C_SR_ARB_LOST_SLA_ACK		0x68
 00B4           ; #define I2C_SR_GCALL_ACK			0x70
 00B4           ; #define I2C_SR_ARB_LOST_GCALL_ACK	0x78
 00B4           ; #define I2C_SR_DATA_ACK				0x80
 00B4           ; #define I2C_SR_DATA_NACK			0x88
 00B4           ; #define I2C_SR_GCALL_DATA_ACK		0x90
 00B4           ; #define I2C_SR_GCALL_DATA_NACK		0x98
 00B4           ; #define I2C_SR_STOP					0xA0
 00B4           ; 
 00B4           ; /* Misc */
 00B4           ; #define I2C_NO_INFO			0xF8
 00B4           ; #define I2C_BUS_ERROR		0x00
 00B4           ; 
 00B4           ; /*
 00B4           ;  * The lower 3 bits of TWSR are reserved on the ATmega163.
 00B4           ;  * The 2 LSB carry the prescaler bits on the newer ATmegas.
 00B4           ;  */

⌨️ 快捷键说明

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