📄 12864.lis
字号:
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 + -