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

📄 clock.lis

📁 单片机开发资料光盘-双龙-686M.zip
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                         .module clock.c
                         .area vector(rom, abs)
                         .org 16
 0010 37C2              rjmp _timer1_ovf
                         .org 18
 0012 49C2              rjmp _timer0_ovf
                         .area data(ram, con, rel)
 0000                 _flag::
 0000                   .blkb 1
                         .area idata
 0000 00                .byte 0
                         .area data(ram, con, rel)
 0001                   .dbfile D:\sl279\8535\clock.c
 0001                   .dbsym s flag _flag c
 0001                 _dflag::
 0001                   .blkb 1
                         .area idata
 0001 00                .byte 0
                         .area data(ram, con, rel)
 0002                   .dbfile D:\sl279\8535\clock.c
 0002                   .dbsym s dflag _dflag c
                         .area text(rom, con, rel)
 0000                   .dbfile D:\sl279\8535\clock.c
 0000                   .dbfunc s receive_byte _receive_byte fI
                       ;              i -> R20
                       ;           temp -> R22
                         .even
 0000                 _receive_byte::
 0000 00D0              rcall push_gset2
 0002                   .dbline -1
 0002                   .dbline 26
                       ; /************************************************************/
                       ; /*               广州天河双龙电子有限公司                   */
                       ; /*               http://www.sl.com.cn                       */
                       ; /*               电脑时钟演示程序(ICCAVR版本)             */
                       ; /*                程序作者:詹卫前                          */
                       ; /*接线方式:CS=PORTC.4 CLK=PORTC.3 DATA=PORTC.2 KEY=PORTC.1 */
                       ; /*       处理器:AT90S8515       晶振频率:8MHZ             */
                       ; /*       SL279 晶振频率:12MHZ    使用SLAVR库                */
                       ; /************************************************************/
                       ; #include<io8535.h>
                       ; #include<slavr.h>
                       ; #pragma interrupt_handler timer1_ovf:9
                       ; #pragma interrupt_handler timer0_ovf:10
                       ; #define setcs     PORTC|=0x10;
                       ; unsigned char flag=0;//时间刷新标志
                       ; unsigned char dflag=0;//计数方向标志
                       ; /*      定义结构体time        */
                       ; struct time               
                       ; {
                       ;  signed char second;
                       ;  signed char minute;
                       ;  signed char hour;
                       ; } time;
                       ; /*         字节接收函数          */     
                       ; unsigned char receive_byte(void)
                       ;   {
 0002                   .dbline 27
                       ;    unsigned char i,temp=0;
 0002 6627              clr R22
 0004                   .dbline 28
                       ;    DDRC&=0xfb;              
 0004 84B3              in R24,0x14
 0006 8B7F              andi R24,251
 0008 84BB              out 0x14,R24
 000A                   .dbline 29
                       ;    delay_us(90);
 000A 0AE5              ldi R16,90
 000C 10E0              ldi R17,0
 000E 00D0              rcall _delay_us
 0010                   .dbline 30
                       ;    for(i=0;i<8;i++)
 0010 4427              clr R20
 0012 0FC0              rjmp L5
 0014                 L2:
 0014                   .dbline 31
                       ;        {
 0014                   .dbline 32
                       ;         temp=temp<<1;  
 0014 660F              lsl R22
 0016                   .dbline 33
                       ;         PORTC|=0x08;//clk=1      
 0016 AB9A              sbi 0x15,3
 0018                   .dbline 34
                       ;         delay_us(10);
 0018 0AE0              ldi R16,10
 001A 10E0              ldi R17,0
 001C 00D0              rcall _delay_us
 001E                   .dbline 35
                       ;         if((PINC&0x04)!=0) 
 001E 9A9B              sbis 0x13,2
 0020 01C0              rjmp L6
 0022                   .dbline 36
                       ;            temp|=0x01;   
 0022 6160              ori R22,1
 0024                 L6:
 0024                   .dbline 37
 0024 85B3              in R24,0x15
 0026 877F              andi R24,247
 0028 85BB              out 0x15,R24
 002A                   .dbline 38
 002A 0AE0              ldi R16,10
 002C 10E0              ldi R17,0
 002E 00D0              rcall _delay_us
 0030                   .dbline 39
 0030                 L3:
 0030                   .dbline 30
 0030 4395              inc R20
 0032                 L5:
 0032                   .dbline 30
 0032 4830              cpi R20,8
 0034 78F3              brlo L2
 0036                   .dbline 40
                       ;         PORTC&=0xf7;//clk=0      
                       ;         delay_us(10);
                       ;        }
                       ;    DDRC|=0x04;  
 0036 A29A              sbi 0x14,2
 0038                   .dbline 41
                       ;    return temp;
 0038 062F              mov R16,R22
 003A 1127              clr R17
 003C                   .dbline -2
 003C                 L1:
 003C 00D0              rcall pop_gset2
 003E                   .dbline 0 ; func end
 003E 0895              ret
 0040                   .dbsym r i 20 c
 0040                   .dbsym r temp 22 c
 0040                   .dbfunc s send_byte _send_byte fI
                       ;              i -> R20
                       ;           para -> R22
                         .even
 0040                 _send_byte::
 0040 00D0              rcall push_gset2
 0042 602F              mov R22,R16
 0044                   .dbline -1
 0044                   .dbline 45
                       ;    }  
                       ; /*         字节发送函数            */
                       ; void send_byte(unsigned char para)
                       ;      {
 0044                   .dbline 47
                       ;       unsigned char i;
                       ;       PORTC&=0xef;//cs=0      
 0044 85B3              in R24,0x15
 0046 8F7E              andi R24,239
 0048 85BB              out 0x15,R24
 004A                   .dbline 48
                       ;       delay_us(90);
 004A 0AE5              ldi R16,90
 004C 10E0              ldi R17,0
 004E 00D0              rcall _delay_us
 0050                   .dbline 49
                       ;       for(i=0;i<8;i++)
 0050 4427              clr R20
 0052 15C0              rjmp L12
 0054                 L9:
 0054                   .dbline 50
                       ;          {
 0054                   .dbline 51
                       ;           if((para&0x80)==0x80)
 0054 862F              mov R24,R22
 0056 8078              andi R24,128
 0058 8038              cpi R24,128
 005A 11F4              brne L13
 005C                   .dbline 52
                       ;               PORTC|=0x04;//data=1   
 005C AA9A              sbi 0x15,2
 005E 03C0              rjmp L14
 0060                 L13:
 0060                   .dbline 54
                       ;           else
                       ;               PORTC&=0xfb;//data=0   
 0060 85B3              in R24,0x15
 0062 8B7F              andi R24,251
 0064 85BB              out 0x15,R24
 0066                 L14:
 0066                   .dbline 55
 0066 AB9A              sbi 0x15,3
 0068                   .dbline 56
 0068 0AE0              ldi R16,10
 006A 10E0              ldi R17,0
 006C 00D0              rcall _delay_us
 006E                   .dbline 57
 006E 85B3              in R24,0x15
 0070 877F              andi R24,247
 0072 85BB              out 0x15,R24
 0074                   .dbline 58
 0074 0AE0              ldi R16,10
 0076 10E0              ldi R17,0
 0078 00D0              rcall _delay_us
 007A                   .dbline 59
 007A 660F              lsl R22
 007C                   .dbline 60
 007C                 L10:
 007C                   .dbline 49
 007C 4395              inc R20
 007E                 L12:
 007E                   .dbline 49
 007E 4830              cpi R20,8
 0080 48F3              brlo L9
 0082                   .dbline -2
 0082                   .dbline 61
                       ;           PORTC|=0x08;//clk=1       
                       ;           delay_us(10);
                       ;           PORTC&=0xf7;//clk=0       
                       ;           delay_us(10);
                       ;           para=para<<1;                
                       ;          }       
                       ;      }
 0082                 L8:
 0082 00D0              rcall pop_gset2
 0084                   .dbline 0 ; func end
 0084 0895              ret
 0086                   .dbsym r i 20 c
 0086                   .dbsym r para 22 c
 0086                   .dbfunc s write279 _write279 fI
                       ;           cmd2 -> R20
                       ;           cmd1 -> R22
                         .even
 0086                 _write279::
 0086 00D0              rcall push_gset2
 0088 422F              mov R20,R18
 008A 602F              mov R22,R16
 008C                   .dbline -1
 008C                   .dbline 64
                       ; /*               写sl279双字节命令                 */          
                       ; void write279(unsigned char cmd1, unsigned char cmd2)
                       ; {
 008C                   .dbline 65
                       ;     send_byte (cmd1);
 008C 062F              mov R16,R22
 008E D8DF              rcall _send_byte
 0090                   .dbline 66
                       ;     send_byte (cmd2);                              
 0090 042F              mov R16,R20
 0092 D6DF              rcall _send_byte
 0094                   .dbline 67
                       ;     PORTC|=0x10;
 0094 AC9A              sbi 0x15,4
 0096                   .dbline -2
 0096                   .dbline 68
                       ; }
 0096                 L15:
 0096 00D0              rcall pop_gset2
 0098                   .dbline 0 ; func end
 0098 0895              ret
 009A                   .dbsym r cmd2 20 c
 009A                   .dbsym r cmd1 22 c
 009A                   .dbfunc s initdis _initdis fI
                         .area func_lit(rom, con, rel)
 0000                 L59:
 0000 2201              .word `L56
 0002 0B01              .word `L53
 0004 3801              .word `L61
 0006 F300              .word `L48
 0008 DB00              .word `L43
 000A 3801              .word `L61
 000C A600              .word `L31
 000E 8E00              .word `L26
                         .area text(rom, con, rel)
 009A                   .dbfile D:\sl279\8535\clock.c
                       ;              i -> R10
                       ;            key -> R20
                         .even
 009A                 _initdis::
 009A 00D0              rcall push_gset5
 009C                   .dbline -1
 009C                   .dbline 71
                       ; /*在启动时设置时间,按shift键后进入计时状态*/
                       ; void initdis()                  
                       ; {
 009C                   .dbline 72
                       ;  unsigned char i=7;
 009C 87E0              ldi R24,7
 009E A82E              mov R10,R24
 00A0                   .dbline 73
                       ;  unsigned char key=0;
 00A0 4427              clr R20
 00A2                   .dbline 74
                       ;  write279(0xc8,0);
 00A2 2227              clr R18
 00A4 08EC              ldi R16,200
 00A6 EFDF              rcall _write279
 00A8                   .dbline 75
                       ;  write279(0xc9,0);
 00A8 2227              clr R18
 00AA 09EC              ldi R16,201
 00AC ECDF              rcall _write279
 00AE                   .dbline 76
                       ;  write279(0x92,1);
 00AE 21E0              ldi R18,1
 00B0 02E9              ldi R16,146
 00B2 E9DF              rcall _write279
 00B4                   .dbline 77
                       ;  write279(0xcb,0);
 00B4 2227              clr R18
 00B6 0BEC              ldi R16,203
 00B8 E6DF              rcall _write279
 00BA                   .dbline 78
                       ;  write279(0xcc,0);
 00BA 2227              clr R18
 00BC 0CEC              ldi R16,204
 00BE E3DF              rcall _write279
 00C0                   .dbline 79
                       ;  write279(0x95,1);
 00C0 21E0              ldi R18,1
 00C2 05E9              ldi R16,149
 00C4 E0DF              rcall _write279
 00C6                   .dbline 80
                       ;  write279(0xce,0);
 00C6 2227              clr R18
 00C8 0EEC              ldi R16,206
 00CA DDDF              rcall _write279
 00CC                   .dbline 81
                       ;  write279(0xcf,0);
 00CC 2227              clr R18
 00CE 0FEC              ldi R16,207
 00D0 DADF              rcall _write279
 00D2                   .dbline 82
                       ;  write279(0x88,0x7f);
 00D2 2FE7              ldi R18,127
 00D4 08E8              ldi R16,136
 00D6 D7DF              rcall _write279
 00D8                   .dbline 84

⌨️ 快捷键说明

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