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

📄 ds1302.lis

📁 用avr的m16产生pwm波控制舵机的程序!
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -