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

📄 ds1302.lis

📁 1602液晶显示模块
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module DS1302.c
                        .area data(ram, con, rel)
 0000           _WriteAddress::
 0000                   .blkb 2
                        .area idata
 0000 8C88              .byte 140,136
                        .area data(ram, con, rel)
 0002                   .blkb 2
                        .area idata
 0002 8684              .byte 134,132
                        .area data(ram, con, rel)
 0004                   .blkb 2
                        .area idata
 0004 8280              .byte 130,128
                        .area data(ram, con, rel)
 0006                   .blkb 1
                        .area idata
 0006 8A                .byte 138
                        .area data(ram, con, rel)
 0007                   .dbfile E:\biyesheji\TESTBE~1\DS1302\程序/ds1302.h
 0007                   .dbsym e WriteAddress _WriteAddress A[7:7]c
 0007           _WriteTime::
 0007                   .blkb 2
                        .area idata
 0007 1012              .byte 16,18
                        .area data(ram, con, rel)
 0009                   .dbfile E:\biyesheji\TESTBE~1\DS1302\程序/ds1302.h
 0009                   .blkb 2
                        .area idata
 0009 3124              .byte 49,36
                        .area data(ram, con, rel)
 000B                   .dbfile E:\biyesheji\TESTBE~1\DS1302\程序/ds1302.h
 000B                   .blkb 2
                        .area idata
 000B 5030              .byte 'P,48
                        .area data(ram, con, rel)
 000D                   .dbfile E:\biyesheji\TESTBE~1\DS1302\程序/ds1302.h
 000D                   .blkb 1
                        .area idata
 000D 00                .byte 0
                        .area data(ram, con, rel)
 000E                   .dbfile E:\biyesheji\TESTBE~1\DS1302\程序/ds1302.h
 000E                   .dbsym e WriteTime _WriteTime A[7:7]c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\biyesheji\TESTBE~1\DS1302\程序/ds1302.h
 0000                   .dbfunc e DS1302_set _DS1302_set fV
 0000           ;              i -> R16
                        .even
 0000           _DS1302_set::
 0000                   .dbline -1
 0000                   .dbline 44
 0000           ; //ICC-AVR 修改日期: 2006-10-29 15:38:44
 0000           ; //姓名:荣俊齐
 0000           ; // Target : M8
 0000           ; // Crystal: 1.0000Mhz
 0000           ; 
 0000           ; #include <iom8v.h>
 0000           ; #include <macros.h>
 0000           ; #include "ds1302.h"
 0000           ; #include "DELAY.C"
 0000           ; const char SEG_table[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
 0000           ; char  Sec_buffer[4]={0,0,0,0};
 0000           ; char  Min_buffer[4]={0,0,0,0};
 0000           ; 
 0000           ; /******************************************************************************
 0000           ;                         定义164的时钟和数据线
 0000           ; ********************************************************************************/
 0000           ; #define DATA_1  PORTD|=(1<<0)
 0000           ; #define DATA_0  PORTD&=~(1<<0)
 0000           ; #define CLK_1  PORTD|=(1<<1)
 0000           ; #define CLK_0  PORTD&=~(1<<1)
 0000           ; /******************************************************************************
 0000           ;                         定义数码管的选择端口
 0000           ; ********************************************************************************/
 0000           ; #define LED1  PORTD=0X07//LED2
 0000           ; #define LED2  PORTD=0X0B//LED1
 0000           ; #define LED3  PORTD=0X13//LED3
 0000           ; #define LED4  PORTD=0X23//LED4
 0000           ; #define LED0  PORTD=0X03//灭
 0000           ; 
 0000           ; /*******************************************************************************
 0000           ;                              单片机初始化程序
 0000           ; 
 0000           ; ******************************************************************************/
 0000           ; void port_init(void)
 0000           ; {
 0000           ;  PORTB = 0x00;
 0000           ;  DDRB  = 0x00;
 0000           ;  PORTC = 0x00; //m103 output only
 0000           ;  DDRC  = 0xff;
 0000           ;  PORTD = 0x00;
 0000           ;  DDRD  = 0xFF;
 0000           ; }
 0000           ; 
 0000           ; //TIMER1 initialize - prescale:1
 0000                   .dbline 45
 0000           ; // WGM: 0) Normal, TOP=0xFFFF
 0000 A998              cbi 0x15,1
 0002                   .dbline 46
 0002           ; // desired value: 1mSec
 0002 A898              cbi 0x15,0
 0004                   .dbline 47
 0004           ; // actual value:  1.000mSec (0.0%)
 0004 0027              clr R16
 0006 02C0              rjmp L5
 0008           L2:
 0008                   .dbline 48
 0008                   .dbline 49
 0008 0000              nop
 000A                   .dbline 50
 000A           L3:
 000A                   .dbline 47
 000A 0395              inc R16
 000C           L5:
 000C                   .dbline 47
 000C 0830              cpi R16,8
 000E E0F3              brlo L2
 0010                   .dbline 51
 0010           ; void timer1_init(void)
 0010           ; {
 0010           ;  TCCR1B = 0x00; //stop
 0010           ;  TCNT1H = 0xFC; //setup
 0010 A89A              sbi 0x15,0
 0012                   .dbline -2
 0012           L1:
 0012                   .dbline 0 ; func end
 0012 0895              ret
 0014                   .dbsym r i 16 c
 0014                   .dbend
 0014                   .dbfunc e DS1302_Write _DS1302_Write fV
 0014           ;              i -> R20,R21
 0014           ;              x -> R22
                        .even
 0014           _DS1302_Write::
 0014 00D0              rcall push_gset2
 0016 602F              mov R22,R16
 0018                   .dbline -1
 0018                   .dbline 57
 0018           ;  TCNT1L = 0x18;
 0018           ;  OCR1AH = 0x03;
 0018           ;  OCR1AL = 0xE8;
 0018           ;  OCR1BH = 0x03;
 0018           ;  OCR1BL = 0xE8;
 0018           ;  ICR1H  = 0x03;
 0018                   .dbline 60
 0018           ;  ICR1L  = 0xE8;
 0018           ;  TCCR1A = 0x00;
 0018           ;  TCCR1B = 0x01; //start Timer
 0018 A998              cbi 0x15,1
 001A                   .dbline 61
 001A           ; }
 001A A29A              sbi 0x14,2
 001C                   .dbline 62
 001C           ; 
 001C 4427              clr R20
 001E 5527              clr R21
 0020           L7:
 0020                   .dbline 63
 0020           ; 
 0020                   .dbline 63
 0020 A998              cbi 0x15,1
 0022                   .dbline 64
 0022           ; void init_devices(void)
 0022 01E0              ldi R16,1
 0024 10E0              ldi R17,0
 0026 9A01              movw R18,R20
 0028 00D0              rcall lsl16
 002A 262E              mov R2,R22
 002C 3324              clr R3
 002E 2022              and R2,R16
 0030 3122              and R3,R17
 0032 2220              tst R2
 0034 11F4              brne X0
 0036 3320              tst R3
 0038 11F0              breq L11
 003A           X0:
 003A                   .dbline 65
 003A           ; {
 003A AA9A              sbi 0x15,2
 003C 01C0              rjmp L12
 003E           L11:
 003E                   .dbline 67
 003E           ;  CLI(); //disable all interrupts
 003E           ;  port_init();
 003E AA98              cbi 0x15,2
 0040           L12:
 0040                   .dbline 68
 0040 0000              nop
 0042                   .dbline 69
 0042 A99A              sbi 0x15,1
 0044                   .dbline 70
 0044 0000              nop
 0046                   .dbline 71
 0046           L8:
 0046                   .dbline 62
 0046 4F5F              subi R20,255  ; offset = 1
 0048 5F4F              sbci R21,255
 004A                   .dbline 62
 004A 4830              cpi R20,8
 004C E0E0              ldi R30,0
 004E 5E07              cpc R21,R30
 0050 3CF3              brlt L7
 0052                   .dbline 72
 0052           ;  timer1_init();
 0052           ;  MCUCR = 0x00;
 0052           ;  GICR  = 0x00;
 0052           ;  TIMSK = 0x04; 
 0052           ;  SEI(); //re-enable interrupts
 0052 A998              cbi 0x15,1
 0054                   .dbline -2
 0054           L6:
 0054 00D0              rcall pop_gset2
 0056                   .dbline 0 ; func end
 0056 0895              ret
 0058                   .dbsym r i 20 I
 0058                   .dbsym r x 22 c
 0058                   .dbend
 0058                   .dbfunc e DS1302_WriteT _DS1302_WriteT fV
 0058           ;           time -> R20
 0058           ;            ddr -> R22
                        .even
 0058           _DS1302_WriteT::
 0058 00D0              rcall push_gset2
 005A 422F              mov R20,R18
 005C 602F              mov R22,R16
 005E                   .dbline -1
 005E                   .dbline 76
 005E           ; 
 005E           ; }
 005E           ; /*******************************************************************************
 005E           ;                              显示程序
 005E                   .dbline 77
 005E           ; 
 005E D0DF              rcall _DS1302_set
 0060                   .dbline 78
 0060           ; ******************************************************************************/
 0060 062F              mov R16,R22
 0062 D8DF              rcall _DS1302_Write
 0064                   .dbline 79
 0064           ; /*发送显示一个字节*/
 0064 042F              mov R16,R20
 0066 D6DF              rcall _DS1302_Write
 0068                   .dbline -2
 0068           L13:
 0068 00D0              rcall pop_gset2
 006A                   .dbline 0 ; func end
 006A 0895              ret
 006C                   .dbsym r time 20 c
 006C                   .dbsym r ddr 22 c
 006C                   .dbend
 006C                   .dbfunc e DS1302_Read _DS1302_Read fc
 006C           ;           temp -> R20
 006C           ;          temp2 -> R22
 006C           ;          temp1 -> R10
 006C           ;              k -> R12
 006C           ;              n -> R14
 006C           ;             xx -> R12
                        .even
 006C           _DS1302_Read::
 006C 00D0              rcall push_gset5
 006E C02E              mov R12,R16
 0070                   .dbline -1
 0070                   .dbline 85
 0070           ; void sendbeyt(char x)
 0070           ; {
 0070           ;   int i;
 0070           ;   for(i=0;i<8;i++)
 0070           ;  {
 0070           ;     CLK_1;
 0070                   .dbline 86
 0070           ;    if(x&(1<<i))
 0070 4427              clr R20
 0072                   .dbline 87
 0072           ;       DATA_1;  
 0072 AA24              clr R10
 0074                   .dbline 88
 0074           ;    else 
 0074 6627              clr R22
 0076                   .dbline 89
 0076           ;      DATA_0;
 0076 C4DF              rcall _DS1302_set
 0078                   .dbline 90
 0078           ;   CLK_0;
 0078 0C2D              mov R16,R12
 007A CCDF              rcall _DS1302_Write
 007C                   .dbline 91
 007C           ;  }
 007C A298              cbi 0x14,2
 007E                   .dbline 92
 007E           ;   CLK_1;
 007E A998              cbi 0x15,1
 0080                   .dbline 93
 0080           ; }
 0080 EE24              clr R14
 0082 15C0              rjmp L18
 0084           L15:
 0084                   .dbline 94
 0084           ; 
 0084                   .dbline 94
 0084 A998              cbi 0x15,1
 0086                   .dbline 95
 0086           ; /* 发送显示4字节*/
 0086 0000              nop
 0088                   .dbline 96
 0088           ; void sendFOURbeyt()
 0088 83B3              in R24,0x13
 008A 8470              andi R24,4
 008C C82E              mov R12,R24
 008E                   .dbline 97
 008E           ; { LED3;
 008E 8430              cpi R24,4
 0090 29F4              brne L19
 0092                   .dbline 98
 0092           ;   sendbeyt(SEG_table[Sec_buffer[0]]);
 0092 01E0              ldi R16,1
 0094 1E2D              mov R17,R14
 0096 00D0              rcall lsl8
 0098 A02A              or R10,R16
 009A 06C0              rjmp L20
 009C           L19:
 009C                   .dbline 100
 009C           ;   delay_nus(200);
 009C           ;     LED4;
 009C 01E0              ldi R16,1
 009E 1E2D              mov R17,R14
 00A0 00D0              rcall lsl8
 00A2 202E              mov R2,R16
 00A4 2094              com R2
 00A6 A220              and R10,R2
 00A8           L20:
 00A8                   .dbline 101
 00A8 A99A              sbi 0x15,1
 00AA                   .dbline 102
 00AA 0000              nop
 00AC                   .dbline 103
 00AC           L16:
 00AC                   .dbline 93
 00AC E394              inc R14
 00AE           L18:
 00AE                   .dbline 93
 00AE 8E2D              mov R24,R14
 00B0 8430              cpi R24,4
 00B2 40F3              brlo L15
 00B4                   .dbline 104
 00B4           ;       sendbeyt(SEG_table[Sec_buffer[1]]);
 00B4           ;      delay_nus(200);
 00B4           ;       LED1;
 00B4           ;     sendbeyt(SEG_table[Min_buffer[0]]);
 00B4 EE24              clr R14
 00B6 15C0              rjmp L24
 00B8           L21:
 00B8                   .dbline 105
 00B8           ;     delay_nus(200);
 00B8                   .dbline 105
 00B8 A998              cbi 0x15,1
 00BA                   .dbline 106
 00BA           ;     LED2;
 00BA 0000              nop
 00BC                   .dbline 107
 00BC           ;       sendbeyt(SEG_table[Min_buffer[1]]);

⌨️ 快捷键说明

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