?? ds1302.lis
字號:
.module ds1302.c
.area text(rom, con, rel)
0000 .dbfile E:\mcu\avr\test\1602_duoji\ds1302.c
0000 .dbfunc e delay _delay fV
0000 ; a -> R20
0000 ; n -> R16
.even
0000 _delay::
0000 0E940000 xcall push_gset1
0004 .dbline -1
0004 .dbline 9
0004 ;
0004 ; #include <iom16v.h>
0004 ; #include <macros.h>
0004 ; #include "1602LCD.h"
0004 ; /************************************************
0004 ; 延時程序
0004 ; ************************************************/
0004 ; void delay(uchar n)
0004 ; {
0004 .dbline 11
0004 ; uchar a;
0004 ; for(a=0;a<n;a++)
0004 4427 clr R20
0006 01C0 xjmp L5
0008 L2:
0008 .dbline 12
0008 L3:
0008 .dbline 11
0008 4395 inc R20
000A L5:
000A .dbline 11
000A 4017 cp R20,R16
000C E8F3 brlo L2
000E .dbline -2
000E L1:
000E 0E940000 xcall pop_gset1
0012 .dbline 0 ; func end
0012 0895 ret
0014 .dbsym r a 20 c
0014 .dbsym r n 16 c
0014 .dbend
0014 .dbfunc e write_data _write_data fV
0014 ; temp -> R20
0014 ; i -> R22
0014 ; data -> R10
0014 ; addr -> R22
.even
0014 _write_data::
0014 0E940000 xcall push_gset3
0018 A22E mov R10,R18
001A 602F mov R22,R16
001C .dbline -1
001C .dbline 18
001C ; ;
001C ; }
001C ; /****************************************************
001C ; 寫一個字節
001C ; ****************************************************/
001C ; void write_data(uchar addr,uchar data)
001C ; {
001C .dbline 20
001C ; unsigned char i,temp;
001C ; T_DDR|=T_IO;
001C D19A sbi 0x1a,1
001E .dbline 21
001E ; T_PORT&=~T_RST;
001E D898 cbi 0x1b,0
0020 .dbline 22
0020 ; T_PORT&=~T_CLK;
0020 DA98 cbi 0x1b,2
0022 .dbline 23
0022 ; asm("nop");
0022 0000 nop
0024 .dbline 24
0024 ; asm("nop");
0024 0000 nop
0026 .dbline 25
0026 ; asm("nop");
0026 0000 nop
0028 .dbline 26
0028 ; asm("nop");
0028 0000 nop
002A .dbline 27
002A ; T_PORT|=T_RST; //時鐘信號低時拉高RST初始化
002A D89A sbi 0x1b,0
002C .dbline 28
002C ; temp=addr;
002C 462F mov R20,R22
002E .dbline 29
002E ; for(i=0;i<8;i++)
002E 6627 clr R22
0030 10C0 xjmp L10
0032 L7:
0032 .dbline 30
0032 ; {
0032 .dbline 31
0032 ; if(temp&(1<<i))
0032 01E0 ldi R16,1
0034 162F mov R17,R22
0036 0E940000 xcall lsl8
003A 242E mov R2,R20
003C 2022 and R2,R16
003E 11F0 breq L11
0040 .dbline 32
0040 ; T_PORT |=T_IO ;
0040 D99A sbi 0x1b,1
0042 01C0 xjmp L12
0044 L11:
0044 .dbline 34
0044 ; else
0044 ; T_PORT &=~T_IO ;
0044 D998 cbi 0x1b,1
0046 L12:
0046 .dbline 35
0046 0000 nop
0048 .dbline 36
0048 0000 nop
004A .dbline 37
004A DA9A sbi 0x1b,2
004C .dbline 38
004C 0000 nop
004E .dbline 39
004E DA98 cbi 0x1b,2
0050 .dbline 40
0050 L8:
0050 .dbline 29
0050 6395 inc R22
0052 L10:
0052 .dbline 29
0052 6830 cpi R22,8
0054 70F3 brlo L7
0056 .dbline 41
0056 ; asm("nop");
0056 ; asm("nop");
0056 ; T_PORT |=T_CLK; //時鐘上升沿寫入數據
0056 ; asm("nop");
0056 ; T_PORT &=~T_CLK; //時鐘拉低電平
0056 ; }
0056 ; temp=data;
0056 4A2D mov R20,R10
0058 .dbline 42
0058 ; for(i=0;i<8;i++)
0058 6627 clr R22
005A 10C0 xjmp L16
005C L13:
005C .dbline 43
005C ; {
005C .dbline 44
005C ; if(temp&(1<<i))
005C 01E0 ldi R16,1
005E 162F mov R17,R22
0060 0E940000 xcall lsl8
0064 242E mov R2,R20
0066 2022 and R2,R16
0068 11F0 breq L17
006A .dbline 45
006A ; T_PORT |=T_IO ;
006A D99A sbi 0x1b,1
006C 01C0 xjmp L18
006E L17:
006E .dbline 47
006E ; else
006E ; T_PORT &=~T_IO ;
006E D998 cbi 0x1b,1
0070 L18:
0070 .dbline 48
0070 0000 nop
0072 .dbline 49
0072 0000 nop
0074 .dbline 50
0074 DA9A sbi 0x1b,2
0076 .dbline 51
0076 0000 nop
0078 .dbline 52
0078 DA98 cbi 0x1b,2
007A .dbline 53
007A L14:
007A .dbline 42
007A 6395 inc R22
007C L16:
007C .dbline 42
007C 6830 cpi R22,8
007E 70F3 brlo L13
0080 .dbline 54
0080 ; asm("nop");
0080 ; asm("nop");
0080 ; T_PORT |=T_CLK; //時鐘上升沿寫入數據
0080 ; asm("nop");
0080 ; T_PORT &=~T_CLK; //時鐘拉低電平
0080 ; }
0080 ; T_PORT&=~T_RST; //禁止DS1302
0080 D898 cbi 0x1b,0
0082 .dbline -2
0082 L6:
0082 0E940000 xcall pop_gset3
0086 .dbline 0 ; func end
0086 0895 ret
0088 .dbsym r temp 20 c
0088 .dbsym r i 22 c
0088 .dbsym r data 10 c
0088 .dbsym r addr 22 c
0088 .dbend
0088 .dbfunc e read_data _read_data fc
0088 ; k -> R20
0088 ; temp -> R22
0088 ; i -> R10
0088 ; addr -> R20
.even
0088 _read_data::
0088 0E940000 xcall push_gset3
008C 402F mov R20,R16
008E .dbline -1
008E .dbline 61
008E ; }
008E ;
008E ; /***************************************************
008E ; 讀一個字節
008E ; ***************************************************/
008E ; uchar read_data(uchar addr)
008E ; {
008E .dbline 63
008E ; uchar i,temp,k;
008E ; temp=0;
008E 6627 clr R22
0090 .dbline 64
0090 ; T_DDR|=T_IO;
0090 D19A sbi 0x1a,1
0092 .dbline 65
0092 ; T_PORT&=~T_RST;
0092 D898 cbi 0x1b,0
0094 .dbline 66
0094 ; T_PORT&=~T_CLK;
0094 DA98 cbi 0x1b,2
0096 .dbline 67
0096 ; asm("nop");
0096 0000 nop
0098 .dbline 68
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -