?? lcd12864_st7920.lst
字號:
__text_start:
__start:
0039 E5CF LDI R28,0x5F
003A E0D4 LDI R29,4
003B BFCD OUT 0x3D,R28
003C BFDE OUT 0x3E,R29
003D 51C0 SUBI R28,0x10
003E 40D0 SBCI R29,0
003F EA0A LDI R16,0xAA
0040 8308 STD Y+0,R16
0041 2400 CLR R0
0042 E7ED LDI R30,0x7D
0043 E0F0 LDI R31,0
0044 E010 LDI R17,0
0045 38E3 CPI R30,0x83
0046 07F1 CPC R31,R17
0047 F011 BEQ 0x004A
0048 9201 ST R0,Z+
0049 CFFB RJMP 0x0045
004A 8300 STD Z+0,R16
004B E5E4 LDI R30,0x54
004C E0F0 LDI R31,0
004D E6A0 LDI R26,0x60
004E E0B0 LDI R27,0
004F E010 LDI R17,0
0050 37E1 CPI R30,0x71
0051 07F1 CPC R31,R17
0052 F021 BEQ 0x0057
0053 95C8 LPM
0054 9631 ADIW R30,1
0055 920D ST R0,X+
0056 CFF9 RJMP 0x0050
0057 940E03C0 CALL _main
_exit:
0059 CFFF RJMP _exit
_speaData:
y --> Y+4
j --> Y+0
i --> R10
len --> R12
dat --> Y+16
005A 940E03D4 CALL push_arg4
005C 940E0488 CALL push_gset4
005E 9728 SBIW R28,0x8
005F 88CC LDD R12,Y+20
FILE: D:\ICC_H\Software.H
(0001) /*********************************************************************
(0002) 微 雪 電 子 WaveShare http://www.waveShare.net
(0003)
(0004) 目 的: 建立AVR的軟件提取庫,增加各類補丁,方便系統程序移植
(0005)
(0006) 目標系統: 基于AVR單片機
(0007)
(0008) 應用軟件: ICCAVR
(0009)
(0010) 版 本: Version 1.0
(0011)
(0012) 圓版時間: 2005-06-25
(0013)
(0014) 開發人員: SEE
(0015)
(0016) 說 明: 若用于商業用途,請保留此段文字或注明代碼來源
(0017)
(0018) 深 圳 市 微 雪 電 子 有 限 公 司 保 留 所 有 的 版 權
(0019) *********************************************************************/
(0020)
(0021) /*01010101010101010101010101010101010101010101010101010101010101010101
(0022) ----------------------------------------------------------------------
(0023) 版本更新記錄:
(0024)
(0025) ----------------------------------------------------------------------
(0026) 入口參數說明:
(0027)
(0028) ----------------------------------------------------------------------
(0029) 待定參數說明:
(0030)
(0031) ----------------------------------------------------------------------
(0032) 對外變量說明:
(0033)
(0034) ----------------------------------------------------------------------
(0035) 對外函數說明:
(0036)
(0037) ----------------------------------------------------------------------
(0038) 10101010101010101010101010101010101010101010101010101010101010101010*/
(0039)
(0040) #ifndef Software_H
(0041) #define Software_H
(0042)
(0043) #include <math.h>
(0044) #include <string.h>
(0045)
(0046) /* 兼容一般程序員的常用寫法 */
(0047) typedef unsigned char uchar;
(0048) typedef unsigned int uint;
(0049) typedef unsigned long ulong;
(0050) typedef signed char schar;
(0051) typedef signed int sint;
(0052) typedef signed long slong;
(0053)
(0054) /* 為方便移植,建議使用下面寫法 */
(0055) typedef unsigned char bool;
(0056) typedef unsigned char uint8;
(0057) typedef unsigned int uint16;
(0058) typedef unsigned long uint32;
(0059) typedef signed char sint8;
(0060) typedef signed int sint16;
(0061) typedef signed long sint32;
(0062) typedef signed char int8;
(0063) typedef signed int int16;
(0064) typedef signed long int32;
(0065)
(0066) /* 下面寫法一般不推薦 */
(0067) //typedef unsigned char ubyte;
(0068) //typedef unsigned int uword;
(0069) //typedef unsigned long udword;
(0070) //typedef signed char sbyte;
(0071) //typedef signed int sword;
(0072) //typedef signed long sdword;
(0073)
(0074) /* 一般程序定義的默認值 */
(0075) //#define NULL 0
(0076) //#define EOF -1
(0077) //#define TRUE 1
(0078) //#define FALSE 0
(0079) //#define YES 1
(0080) //#define NO 0
(0081) //#define ON 1
(0082) //#define OFF 0
(0083) //#define ENABLE 1
(0084) //#define DISABLE 0
(0085) //#define CRR 1
(0086) //#define ERR 0
(0087) //#define RIGHT 1
(0088) //#define WRONG 0
(0089) //#define SUCCESS 1
(0090) //#define FAILURE 0
(0091) //#define PI 3.1415926 //3.1415926535897932
(0092)
(0093) /* 如果你手頭上的RAM實在很緊,不如嘗試下面的define~ */
(0094) //#define _CALLOC(a) ( (a *)calloc(n,sizeof(a)) )
(0095) //#define _MALLOC(a) ( (a *)malloc(sizeof(a)) )
(0096) //#define _MIN(a,b) ( (a) < (b) ? (a) : (b) )
(0097) //#define _MAX(a,b) ( (a) > (b) ? (a) : (b) )
(0098) //#define _EXCHANGE(a,b) { int t; t=a; a=b; b=t; }
(0099) //#define _TOLOWER(c) ( (c)+32 )
(0100) //#define _TOUPPER(c) ( (c)-32 )
(0101)
(0102) //#ifndef BIT
(0103) //#define BIT(x) ( 1<<(x) )
(0104) //#endif
(0105)
(0106) /*--------------------------------------------------------------------
(0107) 函數全稱:數據拆字
(0108) 函數功能:
(0109) 注意事項:D<=999999,C<=6
(0110) 提示說明:調用speaData(12,2),得到dataElem[0]=2,dataElem[1]=1
(0111) 輸 入:
(0112) 返 回:無
(0113) --------------------------------------------------------------------*/
(0114) uint8 dataElem[6];
(0115) void speaData(uint32 dat,sint8 len)
(0116) {
(0117) uint8 i;
(0118) uint32 j,y;
(0119) for(i=0,j=1;i<len;i++)
0060 24AA CLR R10
0061 E041 LDI R20,1
0062 E050 LDI R21,0
0063 E060 LDI R22,0
0064 E070 LDI R23,0
0065 01FE MOVW R30,R28
0066 8340 STD Z+0,R20
0067 8351 STD Z+1,R21
0068 8362 STD Z+2,R22
0069 8373 STD Z+3,R23
006A C046 RJMP 0x00B1
(0120) {
(0121) y=dat/j;
006B 01FE MOVW R30,R28
006C 8020 LDD R2,Z+0
006D 8031 LDD R3,Z+1
006E 8042 LDD R4,Z+2
006F 8053 LDD R5,Z+3
0070 01FE MOVW R30,R28
0071 8860 LDD R6,Z+16
0072 8871 LDD R7,Z+17
0073 8882 LDD R8,Z+18
0074 8893 LDD R9,Z+19
0075 925A ST R5,-Y
0076 924A ST R4,-Y
0077 923A ST R3,-Y
0078 922A ST R2,-Y
0079 0183 MOVW R16,R6
007A 0194 MOVW R18,R8
007B 940E03D9 CALL div32u
007D 01FE MOVW R30,R28
007E 8304 STD Z+4,R16
007F 8315 STD Z+5,R17
0080 8326 STD Z+6,R18
0081 8337 STD Z+7,R19
(0122) dataElem[i]=y%10;
0082 E04A LDI R20,0xA
0083 E050 LDI R21,0
0084 E060 LDI R22,0
0085 E070 LDI R23,0
0086 01FE MOVW R30,R28
0087 8024 LDD R2,Z+4
0088 8035 LDD R3,Z+5
0089 8046 LDD R4,Z+6
008A 8057 LDD R5,Z+7
008B 937A ST R23,-Y
008C 936A ST R22,-Y
008D 935A ST R21,-Y
008E 934A ST R20,-Y
008F 0181 MOVW R16,R2
0090 0192 MOVW R18,R4
0091 940E03DB CALL mod32u
0093 E78D LDI R24,0x7D
0094 E090 LDI R25,0
0095 2DEA MOV R30,R10
0096 27FF CLR R31
0097 0FE8 ADD R30,R24
0098 1FF9 ADC R31,R25
0099 8300 STD Z+0,R16
(0123) j*=10;
009A 01FE MOVW R30,R28
009B 8020 LDD R2,Z+0
009C 8031 LDD R3,Z+1
009D 8042 LDD R4,Z+2
009E 8053 LDD R5,Z+3
009F E04A LDI R20,0xA
00A0 E050 LDI R21,0
00A1 E060 LDI R22,0
00A2 E070 LDI R23,0
00A3 925A ST R5,-Y
00A4 924A ST R4,-Y
00A5 923A ST R3,-Y
00A6 922A ST R2,-Y
00A7 018A MOVW R16,R20
00A8 019B MOVW R18,R22
00A9 940E044A CALL empy32u
00AB 01FE MOVW R30,R28
00AC 8300 STD Z+0,R16
00AD 8311 STD Z+1,R17
00AE 8322 STD Z+2,R18
00AF 8333 STD Z+3,R19
00B0 94A3 INC R10
00B1 14AC CP R10,R12
00B2 F408 BCC 0x00B4
00B3 CFB7 RJMP 0x006B
00B4 9628 ADIW R28,0x8
00B5 940E0480 CALL pop_gset4
00B7 9624 ADIW R28,4
00B8 9508 RET
FILE: D:\ICC_H\I2C.H
(0001) /*********************************************************************
(0002) 微 雪 電 子 WaveShare http://www.waveShare.net
(0003)
(0004) 目 的: 建立I2C操作庫
(0005)
(0006) 目標系統: 基于AVR單片機
(0007)
(0008) 應用軟件: ICCAVR
(0009)
(0010) 版 本: Version 1.0
(0011)
(0012) 圓版時間: 2005-06-25
(0013)
(0014) 開發人員: SEE
(0015)
(0016) 說 明: 若用于商業用途,請保留此段文字或注明代碼來源
(0017)
(0018) 深 圳 市 微 雪 電 子 有 限 公 司 保 留 所 有 的 版 權
(0019) *********************************************************************/
(0020)
(0021) /*01010101010101010101010101010101010101010101010101010101010101010101
(0022) ----------------------------------------------------------------------
(0023) 版本更新記錄:
(0024)
(0025) ----------------------------------------------------------------------
(0026) 入口參數說明:
(0027)
(0028) ----------------------------------------------------------------------
(0029) 待定參數說明:
(0030)
(0031) ----------------------------------------------------------------------
(0032) 對外變量說明:
(0033)
(0034) ----------------------------------------------------------------------
(0035) 對外函數說明:
(0036)
(0037) ----------------------------------------------------------------------
(0038) 10101010101010101010101010101010101010101010101010101010101010101010*/
(0039)
(0040) #ifndef I2C_H
(0041) #define I2C_H
(0042)
(0043) #include "D:\ICC_H\CmmICC.H"
(0044)
(0045) /* TWSR values (not bits) */
(0046) /* Master */
(0047) #define I2C_START 0x08
(0048) #define I2C_RESTART 0x10
(0049)
(0050) /* Master Transmitter */
(0051) #define I2C_MT_SLA_ACK 0x18
(0052) #define I2C_MT_SLA_NACK 0x20
(0053) #define I2C_MT_DATA_ACK 0x28
(0054) #define I2C_MT_DATA_NACK 0x30
(0055) #define I2C_MT_ARB_LOST 0x38
(0056)
(0057) /* Master Receiver */
(0058) #define I2C_MR_ARB_LOST 0x38
(0059) #define I2C_MR_SLA_ACK 0x40
(0060) #define I2C_MR_SLA_NACK 0x48
(0061) #define I2C_MR_DATA_ACK 0x50
(0062) #define I2C_MR_DATA_NACK 0x58
(0063)
(0064) /* Slave Transmitter */
(0065) #define I2C_ST_SLA_ACK 0xA8
(0066) #define I2C_ST_ARB_LOST_SLA_ACK 0xB0
(0067) #define I2C_ST_DATA_ACK 0xB8
(0068) #define I2C_ST_DATA_NACK 0xC0
(0069) #define I2C_ST_LAST_DATA 0xC8
(0070)
(0071) /* Slave Receiver */
(0072) #define I2C_SR_SLA_ACK 0x60
(0073) #define I2C_SR_ARB_LOST_SLA_ACK 0x68
(0074) #define I2C_SR_GCALL_ACK 0x70
(0075) #define I2C_SR_ARB_LOST_GCALL_ACK 0x78
(0076) #define I2C_SR_DATA_ACK 0x80
(0077) #define I2C_SR_DATA_NACK 0x88
(0078) #define I2C_SR_GCALL_DATA_ACK 0x90
(0079) #define I2C_SR_GCALL_DATA_NACK 0x98
(0080) #define I2C_SR_STOP 0xA0
(0081)
(0082) /* Misc */
(0083) #define I2C_NO_INFO 0xF8
(0084) #define I2C_BUS_ERROR 0x00
(0085)
(0086) /*
(0087) * The lower 3 bits of TWSR are reserved on the ATmega163.
(0088) * The 2 LSB carry the prescaler bits on the newer ATmegas.
(0089) */
(0090) #define I2C_STATUS_MASK (_BV(TWS7)|_BV(TWS6)|_BV(TWS5)|_BV(TWS4)|_BV(TWS3))
(0091) #define I2C_STATUS (TWSR & I2C_STATUS_MASK)
(0092)
(0093) /*
(0094) * R/~W bit in SLA+R/W address field.
(0095) */
(0096) #define I2C_READ 1
(0097) #define I2C_WRITE 0
(0098)
(0099) #define I2CStart() (TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN))
(0100) #define I2CStop() (TWCR=(1<<TWINT)|(1<<TWSTO)|(1<<TWEN))
(0101) #define I2CWaitAck() {while(!(TWCR&(1<<TWINT)));}
(0102) #define I2CChkAck() (TWSR&0xf8) //check ack
(0103) #define I2CSendAck() (TWCR|=(1<<TWEA))
(0104) #define I2CSendNoAck() (TWCR&=~(1<<TWEA))
(0105) #define I2CSendByte(x) {TWDR=(x);TWCR=(1<<TWINT)|(1<<TWEN);}
(0106) #define I2CRcvNckByte() (TWCR=(1<<TWINT)|(1<<TWEN))
(0107) #define I2CRcvAckByte() (TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWEA))
(0108)
(0109) /* For Program */
(0110) #define I2C_Stop() I2CStop()
(0111) #define I2C_SendAck() I2CSendAck()
(0112) #define I2C_SendNoAck() I2CSendNoAck()
(0113) #define I2C_WaitAck() I2CWaitAck()
(0114)
(0115) /* I2C Config */
(0116) #define I2C_ERR 0
(0117) #define I2C_CRR 1
(0118)
(0119) /*--------------------------------------------------------------------
(0120) 函數名稱:I2C Start
(0121) 函數功能:
(0122) 注意事項:
(0123) 提示說明:
(0124) 輸 入:
(0125) 返 回:
(0126) --------------------------------------------------------------------*/
(0127) bool I2C_Start()
(0128) {
(0129) I2CStart();
_I2C_Start:
00B9 EA84 LDI R24,0xA4
00BA BF86 OUT 0x36,R24
(0130) I2CWaitAck();
00BB B626 IN R2,0x36
00BC FE27 SBRS R2,7
00BD CFFD RJMP 0x00BB
(0131) if( I2CChkAck()!=I2C_START )
00BE B181 IN R24,0x01
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -