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

📄 12864.lis

📁 数显温度万年历
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0274 00D0              rcall fpint
 0276                   .dbline 116
 0276           ;       count=(temh*256+teml)*6.25;                                        //计算具体温度
 0276 00E0              ldi R16,<L54
 0278 10E0              ldi R17,>L54
 027A 00D0              rcall lpm32
 027C 1801              movw R2,R16
 027E 2901              movw R4,R18
 0280 2E2D              mov R18,R14
 0282 3327              clr R19
 0284 00E0              ldi R16,256
 0286 11E0              ldi R17,1
 0288 00D0              rcall empy16s
 028A 3801              movw R6,R16
 028C 8C2C              mov R8,R12
 028E 9924              clr R9
 0290 680C              add R6,R8
 0292 791C              adc R7,R9
 0294 8301              movw R16,R6
 0296 00D0              rcall int2fp
 0298 3A93              st -y,R19
 029A 2A93              st -y,R18
 029C 1A93              st -y,R17
 029E 0A93              st -y,R16
 02A0 8101              movw R16,R2
 02A2 9201              movw R18,R4
 02A4 00D0              rcall fpmule2
 02A6 00D0              rcall fpint
 02A8 5801              movw R10,R16
 02AA                   .dbline 117
 02AA           ;       dis_buf_18b20[2]=(count%10000)/1000+0x30;       
 02AA 20E1              ldi R18,10000
 02AC 37E2              ldi R19,39
 02AE 00D0              rcall mod16u
 02B0 28EE              ldi R18,1000
 02B2 33E0              ldi R19,3
 02B4 00D0              rcall div16u
 02B6 C801              movw R24,R16
 02B8 C096              adiw R24,48
 02BA 80930600          sts _dis_buf_18b20+2,R24
 02BE                   .dbline 118
 02BE           ;       dis_buf_18b20[1]=(count%1000)/100+0x30; 
 02BE 28EE              ldi R18,1000
 02C0 33E0              ldi R19,3
 02C2 8501              movw R16,R10
 02C4 00D0              rcall mod16u
 02C6 24E6              ldi R18,100
 02C8 30E0              ldi R19,0
 02CA 00D0              rcall div16u
 02CC C801              movw R24,R16
 02CE C096              adiw R24,48
 02D0 80930500          sts _dis_buf_18b20+1,R24
 02D4                   .dbline 119
 02D4           ;       dis_buf_18b20[0]=(count%100)/10+0x30;           
 02D4 24E6              ldi R18,100
 02D6 30E0              ldi R19,0
 02D8 8501              movw R16,R10
 02DA 00D0              rcall mod16u
 02DC 2AE0              ldi R18,10
 02DE 30E0              ldi R19,0
 02E0 00D0              rcall div16u
 02E2 C801              movw R24,R16
 02E4 C096              adiw R24,48
 02E6 80930400          sts _dis_buf_18b20,R24
 02EA                   .dbline -2
 02EA           L51:
 02EA                   .dbline 0 ; func end
 02EA 00C0              rjmp pop_xgset00FC
 02EC                   .dbsym r teml 12 c
 02EC                   .dbsym r temh 14 c
 02EC                   .dbsym r count 10 i
 02EC                   .dbend
 02EC                   .dbfile C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\DS1302_drive.h
 02EC                   .dbfunc e read_byte _read_byte fc
 02EC           ;              i -> R22
 02EC           ;            dat -> R20
                        .even
 02EC           _read_byte::
 02EC 4A93              st -y,R20
 02EE 6A93              st -y,R22
 02F0                   .dbline -1
 02F0                   .dbline 27
 02F0           ; #include<iom8v.h>
 02F0           ; #include<macros.h>
 02F0           ; /***复位脚*****/
 02F0           ; #define RST_CLR PORTB&=~(1<<PB2)                                       //电平置地
 02F0           ; #define RST_SET PORTB|=(1<<PB2)                                        //电平置高
 02F0           ; #define RST_IN DDRB&=~(1<<PB2)                                         //方向输入
 02F0           ; #define RST_OUT DDRB|=(1<<PB2)                                         //方向输出
 02F0           ; /*****双向数据******/
 02F0           ; #define IO_CLR PORTB&=~(1<<PB1)                                        //电平置低
 02F0           ; #define IO_SET PORTB|=(1<<PB1)                                         //电平置高
 02F0           ; #define IO_R PINB&(1<<PB1)                                             //电平读取
 02F0           ; #define IO_IN DDRB&=~(1<<PB1)                                          //方向输入
 02F0           ; #define IO_OUT DDRB|=(1<<PB1)                                          //方向输出
 02F0           ; /*********时钟信号********/
 02F0           ; #define SCK_CLR PORTB&=~(1<<PB0)                                       // 时钟信号
 02F0           ; #define SCK_SET PORTB|=(1<<PB0)                                        // 电平置高
 02F0           ; #define SCK_IN DDRB&=~(1<<PB0)                                         //方向输入
 02F0           ; #define SCK_OUT DDRB|=(1<<PB0)                                          //方向输出
 02F0           ; /******************函数声明********************/
 02F0           ; uchar read_byte(void);                                                 //读一个字节数据
 02F0           ; void write_byte(uchar dat);                                            //写一字节数据
 02F0           ; void write_ds1302(uchar addr,uchar data);                              //在指定地址写一字节数据
 02F0           ; void set_ds1302(uchar addr,uchar *p,uchar n);                          //设置初始化
 02F0           ; void init_ds1302(void);                                                //初始化函数
 02F0           ; /***************从DS1302中读一个字节数据********************/
 02F0           ; uchar read_byte(void)
 02F0           ; {
 02F0                   .dbline 28
 02F0           ;     uchar i,dat=0;
 02F0 4427              clr R20
 02F2                   .dbline 29
 02F2           ;       IO_IN;
 02F2 B998              cbi 0x17,1
 02F4                   .dbline 30
 02F4           ;       IO_CLR;
 02F4 C198              cbi 0x18,1
 02F6                   .dbline 31
 02F6           ;       for(i=0;i<7;i++)
 02F6 6627              clr R22
 02F8 10C0              rjmp L61
 02FA           L58:
 02FA                   .dbline 32
 02FA           ;       {
 02FA                   .dbline 33
 02FA           ;           SCK_SET;
 02FA C09A              sbi 0x18,0
 02FC                   .dbline 34
 02FC           ;               delay_us(10);
 02FC 0AE0              ldi R16,10
 02FE 10E0              ldi R17,0
 0300 7FDE              rcall _delay_us
 0302                   .dbline 35
 0302           ;               SCK_CLR;
 0302 C098              cbi 0x18,0
 0304                   .dbline 36
 0304           ;               delay_us(10);
 0304 0AE0              ldi R16,10
 0306 10E0              ldi R17,0
 0308 7BDE              rcall _delay_us
 030A                   .dbline 37
 030A           ;               if(IO_R)
 030A B19B              sbis 0x16,1
 030C 02C0              rjmp L62
 030E           X14:
 030E                   .dbline 38
 030E           ;                   dat|=0X80;
 030E 4068              ori R20,128
 0310 01C0              rjmp L63
 0312           L62:
 0312                   .dbline 40
 0312           ;               else
 0312           ;                   dat&=0X7F;
 0312 4F77              andi R20,127
 0314           L63:
 0314                   .dbline 41
 0314           ;               SCK_SET;
 0314 C09A              sbi 0x18,0
 0316                   .dbline 42
 0316           ;               dat=dat>>1;     
 0316 4695              lsr R20
 0318                   .dbline 43
 0318           ;       }
 0318           L59:
 0318                   .dbline 31
 0318 6395              inc R22
 031A           L61:
 031A                   .dbline 31
 031A 6730              cpi R22,7
 031C 70F3              brlo L58
 031E           X15:
 031E                   .dbline 44
 031E           ;       IO_OUT;
 031E B99A              sbi 0x17,1
 0320                   .dbline 45
 0320           ;       return dat;
 0320 042F              mov R16,R20
 0322                   .dbline -2
 0322           L57:
 0322                   .dbline 0 ; func end
 0322 6991              ld R22,y+
 0324 4991              ld R20,y+
 0326 0895              ret
 0328                   .dbsym r i 22 c
 0328                   .dbsym r dat 20 c
 0328                   .dbend
 0328                   .dbfunc e write_byte _write_byte fV
 0328           ;              i -> R20
 0328           ;            dat -> R10
                        .even
 0328           _write_byte::
 0328 AA92              st -y,R10
 032A 4A93              st -y,R20
 032C A02E              mov R10,R16
 032E                   .dbline -1
 032E                   .dbline 49
 032E           ; }
 032E           ; /***************从DS1302中写一个字节数据********************/
 032E           ; void write_byte(uchar dat)
 032E           ; {
 032E                   .dbline 51
 032E           ;     uchar i;
 032E           ;       for(i=0;i<8;i++)
 032E 4427              clr R20
 0330 0CC0              rjmp L68
 0332           L65:
 0332                   .dbline 52
 0332           ;       {
 0332                   .dbline 53
 0332           ;           SCK_CLR;
 0332 C098              cbi 0x18,0
 0334                   .dbline 54
 0334           ;               if(dat&0X01)
 0334 A0FE              sbrs R10,0
 0336 02C0              rjmp L69
 0338           X16:
 0338                   .dbline 55
 0338           ;                   IO_SET;
 0338 C19A              sbi 0x18,1
 033A 01C0              rjmp L70
 033C           L69:
 033C                   .dbline 57
 033C           ;               else 
 033C           ;                   IO_CLR;
 033C C198              cbi 0x18,1
 033E           L70:
 033E                   .dbline 58
 033E           ;               delay_us(10);
 033E 0AE0              ldi R16,10
 0340 10E0              ldi R17,0
 0342 5EDE              rcall _delay_us
 0344                   .dbline 59
 0344           ;               SCK_SET;
 0344 C09A              sbi 0x18,0
 0346                   .dbline 60
 0346           ;               dat>>=1;                        
 0346 A694              lsr R10
 0348                   .dbline 61
 0348           ;       }
 0348           L66:
 0348                   .dbline 51
 0348 4395              inc R20
 034A           L68:
 034A                   .dbline 51
 034A 4830              cpi R20,8
 034C 90F3              brlo L65
 034E           X17:
 034E                   .dbline -2
 034E           L64:
 034E                   .dbline 0 ; func end
 034E 4991              ld R20,y+
 0350 A990              ld R10,y+
 0352 0895              ret
 0354                   .dbsym r i 20 c
 0354                   .dbsym r dat 10 c
 0354                   .dbend
 0354                   .dbfunc e read_ds1302 _read_ds1302 fc
 0354           ;           data -> R10
 0354           ;           addr -> R10
                        .even
 0354           _read_ds1302::
 0354 AA92              st -y,R10
 0356 A02E              mov R10,R16
 0358                   .dbline -1
 0358                   .dbline 65
 0358           ; }
 0358           ; /*********************在指定的地址读一字节数据************************/
 0358           ; uchar read_ds1302(uchar addr)
 0358           ; {
 0358                   .dbline 67
 0358           ;     char data;
 0358           ;     RST_CLR;
 0358 C298              cbi 0x18,2
 035A                   .dbline 68
 035A           ;       SCK_CLR;
 035A C098              cbi 0x18,0
 035C                   .dbline 69
 035C           ;       delay_us(10);
 035C 0AE0              ldi R16,10
 035E 10E0              ldi R17,0
 0360 4FDE              rcall _delay_us
 0362                   .dbline 70
 0362           ;       RST_SET;
 0362 C29A              sbi 0x18,2
 0364                   .dbline 71
 0364           ;       delay_us(10);
 0364 0AE0              ldi R16,10
 0366 10E0              ldi R17,0
 0368 4BDE              rcall _delay_us
 036A                   .dbline 72
 036A           ;       write_byte(addr);
 036A 0A2D              mov R16,R10
 036C DDDF              rcall _write_byte
 036E                   .dbline 73
 036E           ;       delay_us(10);
 036E 0AE0              ldi R16,10
 0370 10E0              ldi R17,0
 0372 46DE              rcall _delay_us
 0374                   .dbline 74
 0374           ;       data=read_byte();
 0374 BBDF              rcall _read_byte
 0376 A02E              mov R10,R16
 0378                   .dbline 75
 0378           ;       delay_us(10);
 0378 0AE0              ldi R16,10
 037A 10E0              ldi R17,0
 037C 41DE              rcall _delay_us

⌨️ 快捷键说明

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