?? lcd1602pbpd.lis
字號:
.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 + -