?? m16ds1302.lst
字號:
__text_start:
__start:
002B E5CF LDI R28,0x5F
002C E0D4 LDI R29,4
002D BFCD OUT 0x3D,R28
002E BFDE OUT 0x3E,R29
002F 51C0 SUBI R28,0x10
0030 40D0 SBCI R29,0
0031 EA0A LDI R16,0xAA
0032 8308 STD Y+0,R16
0033 2400 CLR R0
0034 E6E2 LDI R30,0x62
0035 E0F0 LDI R31,0
0036 E010 LDI R17,0
0037 36E4 CPI R30,0x64
0038 07F1 CPC R31,R17
0039 F011 BEQ 0x003C
003A 9201 ST R0,Z+
003B CFFB RJMP 0x0037
003C 8300 STD Z+0,R16
003D E5E4 LDI R30,0x54
003E E0F0 LDI R31,0
003F E6A0 LDI R26,0x60
0040 E0B0 LDI R27,0
0041 E010 LDI R17,0
0042 35E6 CPI R30,0x56
0043 07F1 CPC R31,R17
0044 F021 BEQ 0x0049
0045 95C8 LPM
0046 9631 ADIW R30,1
0047 920D ST R0,X+
0048 CFF9 RJMP 0x0042
0049 940E015D CALL _main
_exit:
004B CFFF RJMP _exit
_ChangeIntToHex:
dec --> R20
004C 940E019E CALL push_gset1
004E 01A8 MOVW R20,R16
FILE: F:\job\M16學習板\DS1302時鐘(實驗十三)\..\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 bit;
(0057) typedef unsigned char uint8;
(0058) typedef unsigned int uint16;
(0059) typedef unsigned long uint32;
(0060) typedef signed char sint8;
(0061) typedef signed int sint16;
(0062) typedef signed long sint32;
(0063) typedef signed char int8;
(0064) typedef signed int int16;
(0065) typedef signed long int32;
(0066) //typedef const code;
(0067)
(0068) /* 一般程序定義的默認值 */
(0069) #define NULL 0
(0070) #define EOF -1
(0071) #define TRUE 1
(0072) #define FALSE 0
(0073) #define ON 1
(0074) #define OFF 0
(0075) #define ENABLE 1
(0076) #define DISABLE 0
(0077) #define CRR 1
(0078) #define ERR 0
(0079) #define RIGHT 1
(0080) #define WRONG 0
(0081) #define SUCCESS 1
(0082) #define FAILURE 0
(0083) //#define PI 3.1415926 //3.1415926535897932
(0084)
(0085) /* 如果你手頭上的RAM實在很緊,不如嘗試下面的define~ */
(0086) //#define _CALLOC(a) ( (a *)calloc(n,sizeof(a)) )
(0087) //#define _MALLOC(a) ( (a *)malloc(sizeof(a)) )
(0088) //#define _MIN(a,b) ( (a) < (b) ? (a) : (b) )
(0089) //#define _MAX(a,b) ( (a) > (b) ? (a) : (b) )
(0090) //#define _EXCHANGE(a,b) { int t; t=a; a=b; b=t; }
(0091) //#define _TOLOWER(c) ( (c)+32 )
(0092) //#define _TOUPPER(c) ( (c)-32 )
(0093)
(0094) //#ifndef BIT
(0095) //#define BIT(x) ( 1<<(x) )
(0096) //#endif
(0097)
(0098) /*--------------------------------------------------------------------
(0099) 函數全稱:數據拆字
(0100) 函數功能:自己看~
(0101) 注意事項:D<=999999,C<=6
(0102) 提示說明:調用speaData(12,2),得到dataElem[0]=2,dataElem[1]=1
(0103) 輸 入:
(0104) 返 回:無
(0105) --------------------------------------------------------------------
(0106) uint8 dataElem[6];
(0107) void speaData(uint32 dat,sint8 len)
(0108) {
(0109) uint8 i;
(0110) uint32 j,y;
(0111) for(i=0,j=1;i<len;i++)
(0112) {
(0113) y=dat/j;
(0114) dataElem[i]=y%10;
(0115) j*=10;
(0116) }
(0117) }
(0118) /*--------------------------------------------------------------------
(0119) 函數全稱:十進制強制轉換為十六進制
(0120) 函數功能:
(0121) 注意事項:
(0122) 提示說明:調用changeIntToHex(33),return 0x33
(0123) 輸 入:
(0124) 返 回:
(0125) --------------------------------------------------------------------*/
(0126) #define changeIntToHex(dec) ( ( ((dec)/10) <<4 ) + ((dec)%10) )
(0127) /*--------------------------------------------------------------------
(0128) 函數全稱:十進制強制轉換為十六進制
(0129) 函數功能:
(0130) 注意事項:
(0131) 提示說明:調用changeIntToHex(33),return 0x33
(0132) 輸 入:
(0133) 返 回:
(0134) --------------------------------------------------------------------*/
(0135) void ChangeIntToHex( uchar *dec)
(0136) {
(0137) *dec = (((*dec)/10) <<4 )|((*dec)%10) ;
004F 01FA MOVW R30,R20
0050 8020 LDD R2,Z+0
0051 2433 CLR R3
0052 E01A LDI R17,0xA
0053 2D02 MOV R16,R2
0054 940E017B CALL mod8u
0056 2E40 MOV R4,R16
0057 E01A LDI R17,0xA
0058 2D02 MOV R16,R2
0059 940E017D CALL div8u
005B 2F80 MOV R24,R16
005C 708F ANDI R24,0xF
005D 9582 SWAP R24
005E 2984 OR R24,R4
005F 01FA MOVW R30,R20
0060 8380 STD Z+0,R24
0061 940E01A1 CALL pop_gset1
0063 9508 RET
(0138) }
(0139) /*--------------------------------------------------------------------
(0140) 函數全稱:十進制化為十六進制,并以十進制格式返回
(0141) 函數功能:
(0142) 注意事項:傳參必須為 unsigned 類型,否則移位結果可能嚇你一跳
(0143) 提示說明:調用converseIntToHex(33),return 21
(0144) 輸 入:
(0145) 返 回:
(0146) --------------------------------------------------------------------/
(0147) #define converseIntToHex(dec) ( ( ((dec)>>4) *10 ) + ((dec)%16) )
(0148) /*--------------------------------------------------------------------
(0149) 函數全稱:十六進制強制轉換為十進制
(0150) 函數功能:
(0151) 注意事項:傳參必須為 unsigned 類型,否則移位結果可能嚇你一跳
(0152) 提示說明:調用changeHexToInt(0x33),return 33
(0153) 輸 入:
(0154) 返 回:
(0155) --------------------------------------------------------------------*/
(0156) #define changeHexToInt(hex) ( ( ((hex)>>4) *10 ) + ((hex)%16) )
(0157) /*--------------------------------------------------------------------
(0158) 函數全稱:十六進制強制轉換為十進制
(0159) 函數功能:
(0160) 注意事項:傳參必須為 unsigned 類型,否則移位結果可能嚇你一跳
(0161) 提示說明:調用changeHexToInt(0x33),return 33
(0162) 輸 入:
(0163) 返 回:
(0164) --------------------------------------------------------------------*/
(0165) void ChangeHexToInt(uchar *hex)
(0166) {
(0167) *hex = (((*hex)>>4) *10 ) + ((*hex)&0x0f);
_ChangeHexToInt:
hex --> R16
0064 01F8 MOVW R30,R16
0065 8020 LDD R2,Z+0
0066 2433 CLR R3
0067 2D82 MOV R24,R2
0068 9582 SWAP R24
0069 708F ANDI R24,0xF
006A E09A LDI R25,0xA
006B 9F98 MUL R25,R24
006C 2D82 MOV R24,R2
006D 708F ANDI R24,0xF
006E 2C20 MOV R2,R0
006F 0E28 ADD R2,R24
0070 8220 STD Z+0,R2
0071 9508 RET
(0168) }
(0169) /*--------------------------------------------------------------------
(0170) 函數全稱:十六進制化為十進制,,并以十六進制格式返回
(0171) 函數功能:
(0172) 注意事項:
(0173) 提示說明:調用converseHexToInt(0x33),return 0x51
(0174) 輸 入:
(0175) 返 回:
(0176) --------------------------------------------------------------------*/
(0177) #define converseHexToInt(hex) ( ( ((hex)/10) <<4 ) + ((hex)%10) )
(0178)
(0179) void Delay(void)
(0180) {
(0181) uchar i;
(0182) i = 200;
_Delay:
i --> R16
0072 EC08 LDI R16,0xC8
(0183) while(i--);
0073 2E20 MOV R2,R16
0074 2433 CLR R3
0075 5001 SUBI R16,1
0076 2022 TST R2
0077 F7D9 BNE 0x0073
0078 9508 RET
_DS1302WrByte:
i --> R20
x --> R22
0079 940E019C CALL push_gset2
007B 2F60 MOV R22,R16
FILE: F:\job\M16學習板\DS1302時鐘(實驗十三)\..\ICC_H\DS1302.H
(0001) /*********************************************************************
(0002) 目 的: 建立DS1302的操作庫
(0003)
(0004) 目標系統: 基于AVR單片機
(0005)
(0006) 應用軟件: ICCAVR 6.31a
(0007)
(0008) 版 本: Version 1.0
(0009)
(0010) 圓版時間: 2007年4月12日
(0011)
(0012) 開發人員: shinea8868
(0013)
(0014) 說 明: 若用于商業用途,請保留此段文字或注明代碼來源
(0015)
(0016) 揚州精雅科技有限公司擁有版權
(0017) *********************************************************************/
(0018) /*-------------------------------------------------------------------
(0019) 函數名稱: void DS1302SetTime(uchar hour,uchar minutes,uchar second)
(0020) 函數功能: DS1302時間設定
(0021) 參 數: uchar hour,uchar minutes,uchar second
(0022) 返 回 值: 無
(0023) ---------------------------------------------------------------------
(0024) 函數名稱: void DS1302Init(void)
(0025) 函數功能: 初始化時鐘端口信息
(0026) 參 數:
(0027) 返 回 值: 無
(0028) ---------------------------------------------------------------------
(0029) 函數名稱: void DS1302GetTime(uchar *time)
(0030) 函數功能: 讀DS1302時間
(0031) 參 數: uchar hour,uchar minutes,uchar second
(0032) 返 回 值: 無
(0033) -------------------------------------------------------------------*/
(0034)
(0035) #ifndef DS1302_H
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -