📄 zz.lis
字号:
02D6 9CDF xcall _ds1820_read_byte
02D8 A02E mov R10,R16
02DA BB24 clr R11
02DC .dbline 109
02DC ; b = ds1820_read_byte();
02DC 99DF xcall _ds1820_read_byte
02DE 602F mov R22,R16
02E0 7727 clr R23
02E2 .dbline 110
02E2 ; t = b;
02E2 6B01 movw R12,R22
02E4 .dbline 111
02E4 ; t <<= 8;
02E4 DC2C mov R13,R12
02E6 CC24 clr R12
02E8 .dbline 112
02E8 ; t = t | a;
02E8 CA28 or R12,R10
02EA DB28 or R13,R11
02EC .dbline 114
02EC ;
02EC ; tt = t * 0.0625;
02EC 00E0 ldi R16,<L74
02EE 10E0 ldi R17,>L74
02F0 0E940000 xcall lpm32
02F4 1801 movw R2,R16
02F6 2901 movw R4,R18
02F8 8601 movw R16,R12
02FA 0E940000 xcall uint2fp
02FE 3A93 st -y,R19
0300 2A93 st -y,R18
0302 1A93 st -y,R17
0304 0A93 st -y,R16
0306 8101 movw R16,R2
0308 9201 movw R18,R4
030A 0E940000 xcall fpmule2
030E 0883 std y+0,R16
0310 1983 std y+1,R17
0312 2A83 std y+2,R18
0314 3B83 std y+3,R19
0316 .dbline 115
0316 ; t = tt * 10 + 0.5; //放大10倍输出并四舍五入
0316 00E0 ldi R16,<L75
0318 10E0 ldi R17,>L75
031A 0E940000 xcall lpm32
031E CE01 movw R24,R28
0320 9A93 st -y,R25
0322 8A93 st -y,R24
0324 0E940000 xcall fpmule1
0328 1801 movw R2,R16
032A 2901 movw R4,R18
032C 00E0 ldi R16,<L76
032E 10E0 ldi R17,>L76
0330 0E940000 xcall lpm32
0334 3A93 st -y,R19
0336 2A93 st -y,R18
0338 1A93 st -y,R17
033A 0A93 st -y,R16
033C 8101 movw R16,R2
033E 9201 movw R18,R4
0340 0E940000 xcall fpadd2
0344 0E940000 xcall fpint
0348 6801 movw R12,R16
034A .dbline 117
034A ;
034A ; a = t / 100; //十位
034A 24E6 ldi R18,100
034C 30E0 ldi R19,0
034E 0E940000 xcall div16u
0352 5801 movw R10,R16
0354 .dbline 118
0354 ; b = t / 10 - a * 10; //个位
0354 0AE0 ldi R16,10
0356 10E0 ldi R17,0
0358 9501 movw R18,R10
035A 0E940000 xcall empy16s
035E 1801 movw R2,R16
0360 2AE0 ldi R18,10
0362 30E0 ldi R19,0
0364 8601 movw R16,R12
0366 0E940000 xcall div16u
036A B801 movw R22,R16
036C 6219 sub R22,R2
036E 7309 sbc R23,R3
0370 .dbline 119
0370 ; c = t - a * 100 - b * 10; //小数位
0370 04E6 ldi R16,100
0372 10E0 ldi R17,0
0374 9501 movw R18,R10
0376 0E940000 xcall empy16s
037A A601 movw R20,R12
037C 401B sub R20,R16
037E 510B sbc R21,R17
0380 0AE0 ldi R16,10
0382 10E0 ldi R17,0
0384 9B01 movw R18,R22
0386 0E940000 xcall empy16s
038A 401B sub R20,R16
038C 510B sbc R21,R17
038E .dbline 120
038E ; locate(1,7);
038E 27E0 ldi R18,7
0390 01E0 ldi R16,1
0392 C2DE xcall _locate
0394 .dbline 121
0394 ; write_shuju(1,a+0x30);
0394 9501 movw R18,R10
0396 205D subi R18,208 ; offset = 48
0398 3F4F sbci R19,255
039A 01E0 ldi R16,1
039C 65DE xcall _write_shuju
039E .dbline 122
039E ; write_shuju(1,b+0x30);
039E 9B01 movw R18,R22
03A0 205D subi R18,208 ; offset = 48
03A2 3F4F sbci R19,255
03A4 01E0 ldi R16,1
03A6 60DE xcall _write_shuju
03A8 .dbline 123
03A8 ; write_hz(".");
03A8 00E0 ldi R16,<L77
03AA 10E0 ldi R17,>L77
03AC A4DE xcall _write_hz
03AE .dbline 124
03AE ; write_shuju(1,c+0x30);
03AE 9A01 movw R18,R20
03B0 205D subi R18,208 ; offset = 48
03B2 3F4F sbci R19,255
03B4 01E0 ldi R16,1
03B6 58DE xcall _write_shuju
03B8 .dbline 125
03B8 ; delay(100);
03B8 04E6 ldi R16,100
03BA 10E0 ldi R17,0
03BC 21DE xcall _delay
03BE .dbline -2
03BE L72:
03BE .dbline 0 ; func end
03BE 2496 adiw R28,4
03C0 0C940000 xjmp pop_xgsetF03C
03C4 .dbsym l tt 0 D
03C4 .dbsym r c 20 i
03C4 .dbsym r b 22 i
03C4 .dbsym r a 10 i
03C4 .dbsym r t 12 i
03C4 .dbend
03C4 .dbfile C:\DOCUME~1\Administrator\桌面\12864_~1\zz.c
03C4 .dbfunc e port_init _port_init fV
.even
03C4 _port_init::
03C4 .dbline -1
03C4 .dbline 44
03C4 ; #include <iom16v.h>
03C4 ; #include <macros.h>
03C4 ; #include "12864.h"
03C4 ; #include "adc.h"
03C4 ; #include "18B20.h"
03C4 ; #define uchar unsigned char
03C4 ; #define uint unsigned int
03C4 ; uint A ,B;
03C4 ; typedef unsigned char U8; /* defined for unsigned 8-bits integer variable 无符号8位整型变量 */
03C4 ; typedef signed char S8; /* defined for signed 8-bits integer variable 有符号8位整型变量 */
03C4 ; typedef unsigned int U16; /* defined for unsigned 16-bits integer variable 无符号16位整型变量 */
03C4 ; typedef signed int S16; /* defined for signed 16-bits integer variable 有符号16位整型变量 */
03C4 ; typedef unsigned long U32; /* defined for unsigned 32-bits integer variable 无符号32位整型变量 */
03C4 ; typedef signed long S32; /* defined for signed 32-bits integer variable 有符号32位整型变量 */
03C4 ; typedef float F32; /* single precision floating point variable (32bits) 单精度浮点数(32位长度) */
03C4 ; typedef double F64; /* double precision floating point variable (64bits) 双精度浮点数(64位长度) */
03C4 ; #define C4_IN DDRB &= ~(1 << PB4) /*设置输入*/
03C4 ; #define C4_OUT DDRB |= (1 << PB4) /*设置输出*/
03C4 ; #define C4_CLR PORTB &= ~(1 << PB4) /*置低电平*/
03C4 ; #define C4_SET PORTB |= (1 << PB4) /*置高电平*/
03C4 ; #define C4_R PINB & (1 <<PB4) /*读了电平*/
03C4 ;
03C4 ; /**************************************************************************
03C4 ; 通讯I/O空间定义
03C4 ; ***************************************************************************/
03C4 ; #define COM_IN C4_IN
03C4 ; #define COM_OUT C4_OUT
03C4 ; #define COM_CLR C4_CLR
03C4 ; #define COM_SET C4_SET
03C4 ; #define COM_R C4_R
03C4 ;
03C4 ; /**************************************************************************
03C4 ; 全局变量定义区
03C4 ; ***************************************************************************/
03C4 ; U8 i;
03C4 ; U8 U8FLAG,k;
03C4 ; U8 U8count,U8temp;
03C4 ; U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
03C4 ; U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
03C4 ; U8 U8comdata;
03C4 ; U16 ReceiveHighByte;
03C4 ; U16 ReceiveLowByte;
03C4 ; void port_init()
03C4 ; {
03C4 .dbline 45
03C4 ; DDRD = 0xFF;
03C4 8FEF ldi R24,255
03C6 81BB out 0x11,R24
03C8 .dbline 46
03C8 ; PORTD = 0x00;
03C8 2224 clr R2
03CA 22BA out 0x12,R2
03CC .dbline 47
03CC ; DDRC = 0xFF;
03CC 84BB out 0x14,R24
03CE .dbline 48
03CE ; PORTC = 0x00;
03CE 25BA out 0x15,R2
03D0 .dbline 49
03D0 ; DDRA = 0xFE;
03D0 8EEF ldi R24,254
03D2 8ABB out 0x1a,R24
03D4 .dbline 50
03D4 ; PORTA = 0x00;
03D4 2BBA out 0x1b,R2
03D6 .dbline 51
03D6 ; PORTC|=BIT(2)+BIT(5);
03D6 85B3 in R24,0x15
03D8 8462 ori R24,36
03DA 85BB out 0x15,R24
03DC .dbline 52
03DC ; PORTC&=~BIT(4);
03DC AC98 cbi 0x15,4
03DE .dbline 53
03DE ; DDRB = 0x0C;
03DE 8CE0 ldi R24,12
03E0 87BB out 0x17,R24
03E2 .dbline 54
03E2 ; PORTB = 0x03;
03E2 83E0 ldi R24,3
03E4 88BB out 0x18,R24
03E6 .dbline -2
03E6 L78:
03E6 .dbline 0 ; func end
03E6 0895 ret
03E8 .dbend
03E8 .dbfunc e Delay _Delay fV
03E8 ; i -> R16,R17
.even
03E8 _Delay::
03E8 .dbline -1
03E8 .dbline 57
03E8 ; }
03E8 ; void Delay(unsigned int i)
03E8 ; {
03E8 L80:
03E8 .dbline 58
03E8 ; while(i--);
03E8 L81:
03E8 .dbline 58
03E8 1801 movw R2,R16
03EA 0150 subi R16,1
03EC 1040 sbci R17,0
03EE 2220 tst R2
03F0 D9F7 brne L80
03F2 3320 tst R3
03F4 C9F7 brne L80
03F6 X22:
03F6 .dbline -2
03F6 L79:
03F6 .dbline 0 ; func end
03F6 0895 ret
03F8 .dbsym r i 16 i
03F8 .dbend
03F8 .dbfunc e DelaymS _DelaymS fV
03F8 ; i -> R20,R21
03F8 ; dly -> R16,R17
.even
03F8 _DelaymS::
03F8 4A93 st -y,R20
03FA 5A93 st -y,R21
03FC .dbline -1
03FC .dbline 62
03FC ; }
03FC ;
03FC ; void DelaymS (U16 dly)
03FC ; {
03FC .dbline 64
03FC ; U16 i;
03FC ; for ( ; dly>0; dly--)
03FC 0CC0 xjmp L87
03FE L84:
03FE .dbline 65
03FE ; {
03FE .dbline 66
03FE ; WDR();
03FE A895 wdr
0400 .dbline 67
0400 ; for (i=0; i<1119; i++);
0400 4427 clr R20
0402 5527 clr R21
0404 02C0 xjmp L91
0406 L88:
0406 .dbline 67
0406 L89:
0406 .dbline 67
0406 4F5F subi R20,255 ; offset = 1
0408 5F4F sbci R21,255
040A L91:
040A .dbline 67
040A 4F35 cpi R20,95
040C E4E0 ldi R30,4
040E 5E07 cpc R21,R30
0410 D0F3 brlo L88
0412 X23:
0412 .dbline 68
0412 ; }
0412 L85:
0412 .dbline 64
0412 0150 subi R16,1
0414 1040 sbci R17,0
0416 L87:
0416 .dbline 64
0416 0030 cpi R16,0
0418 0107 cpc R16,R17
041A 89F7 brne L84
041C X24:
041C .dbline -2
041C L83:
041C .dbline 0 ; func end
041C 5991 ld R21,y+
041E 4991 ld R20,y+
0420 0895 ret
0422 .dbsym r i 20 i
0422 .dbsym r dly 16 i
0422 .dbend
0422 .dbfunc e Delay_10us _Delay_10us fV
0422 ; i -> R16
.even
0422 _Delay_10us::
0422 .dbline -1
0422 .dbline 73
0422 ; }
0422 ;
0422 ;
0422 ; void Delay_10us(void)
0422 ; {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -