📄 ds1302_mega16.lis
字号:
00C2 2C2D mov R18,R12
00C4 0A2D mov R16,R10
00C6 E7DF xcall _LCD_set_xy
00C8 06C0 xjmp L13
00CA L12:
00CA .dbline 124
00CA ; while (*s)
00CA ; {
00CA .dbline 125
00CA ; LCD_write_byte(0,*s);
00CA FA01 movw R30,R20
00CC 2081 ldd R18,z+0
00CE 0027 clr R16
00D0 BCDF xcall _LCD_write_byte
00D2 .dbline 126
00D2 ; s++;
00D2 4F5F subi R20,255 ; offset = 1
00D4 5F4F sbci R21,255
00D6 .dbline 127
00D6 ; }
00D6 L13:
00D6 .dbline 123
00D6 FA01 movw R30,R20
00D8 2080 ldd R2,z+0
00DA 2220 tst R2
00DC B1F7 brne L12
00DE X3:
00DE .dbline -2
00DE L11:
00DE .dbline 0 ; func end
00DE 0C940000 xjmp pop_xgset303C
00E2 .dbsym r s 20 pc
00E2 .dbsym r Y 12 c
00E2 .dbsym r X 10 c
00E2 .dbend
00E2 .dbfunc e Move _Move fV
00E2 ; i -> R10
00E2 ; time -> y+6
00E2 ; dirction -> R12
00E2 ; step -> R20
.even
00E2 _Move::
00E2 0E940000 xcall push_xgset303C
00E6 C22E mov R12,R18
00E8 402F mov R20,R16
00EA .dbline -1
00EA .dbline 131
00EA ; }
00EA ; //=======================================================
00EA ; void Move(uint8_t step,uint8_t dirction,uint16_t time)
00EA ; {
00EA .dbline 133
00EA ; uint8_t i;
00EA ; for(i=0;i<step-1;i++)
00EA AA24 clr R10
00EC 07C0 xjmp L19
00EE L16:
00EE .dbline 134
00EE ; {
00EE .dbline 135
00EE ; LCD_write_byte(1,dirction); //字符移动方向
00EE 2C2D mov R18,R12
00F0 01E0 ldi R16,1
00F2 ABDF xcall _LCD_write_byte
00F4 .dbline 136
00F4 ; Delay_nms(time); //控制移动时间
00F4 0E81 ldd R16,y+6
00F6 1F81 ldd R17,y+7
00F8 1CD0 xcall _Delay_nms
00FA .dbline 137
00FA ; }
00FA L17:
00FA .dbline 133
00FA A394 inc R10
00FC L19:
00FC .dbline 133
00FC 842F mov R24,R20
00FE 8150 subi R24,1
0100 A816 cp R10,R24
0102 A8F3 brlo L16
0104 X4:
0104 .dbline -2
0104 L15:
0104 .dbline 0 ; func end
0104 0C940000 xjmp pop_xgset303C
0108 .dbsym r i 10 c
0108 .dbsym l time 6 i
0108 .dbsym r dirction 12 c
0108 .dbsym r step 20 c
0108 .dbend
0108 .dbfunc e Flash_lcd _Flash_lcd fV
0108 ; j -> R10
0108 ; times -> R14
0108 ; delay_t -> R12,R13
.even
0108 _Flash_lcd::
0108 0E940000 xcall push_xgset00FC
010C E22E mov R14,R18
010E 6801 movw R12,R16
0110 .dbline -1
0110 .dbline 141
0110 ; }
0110 ; //=========================================================
0110 ; void Flash_lcd(uint16_t delay_t,uint8_t times)
0110 ; {
0110 .dbline 143
0110 ; uint8_t j;
0110 ; for(j=0;j<times;j++)
0110 AA24 clr R10
0112 0BC0 xjmp L24
0114 L21:
0114 .dbline 144
0114 ; {
0114 .dbline 145
0114 ; LCD_write_byte(1,0x08);
0114 28E0 ldi R18,8
0116 01E0 ldi R16,1
0118 98DF xcall _LCD_write_byte
011A .dbline 146
011A ; Delay_nms(delay_t);
011A 8601 movw R16,R12
011C 0AD0 xcall _Delay_nms
011E .dbline 147
011E ; LCD_write_byte(1,0x0c);
011E 2CE0 ldi R18,12
0120 01E0 ldi R16,1
0122 93DF xcall _LCD_write_byte
0124 .dbline 148
0124 ; Delay_nms(delay_t);
0124 8601 movw R16,R12
0126 05D0 xcall _Delay_nms
0128 .dbline 149
0128 ; }
0128 L22:
0128 .dbline 143
0128 A394 inc R10
012A L24:
012A .dbline 143
012A AE14 cp R10,R14
012C 98F3 brlo L21
012E X5:
012E .dbline -2
012E L20:
012E .dbline 0 ; func end
012E 0C940000 xjmp pop_xgset00FC
0132 .dbsym r j 10 c
0132 .dbsym r times 14 c
0132 .dbsym r delay_t 12 i
0132 .dbend
0132 .dbfunc e Delay_nms _Delay_nms fV
0132 ; i -> R20,R21
0132 ; ms -> R16,R17
.even
0132 _Delay_nms::
0132 4A93 st -y,R20
0134 5A93 st -y,R21
0136 .dbline -1
0136 .dbline 153
0136 ; }
0136 ; //========================================================
0136 ; void Delay_nms(uint16_t ms)
0136 ; {
0136 0AC0 xjmp L27
0138 L26:
0138 .dbline 156
0138 ; uint16_t i;
0138 ; while(ms--)
0138 ; {
0138 .dbline 157
0138 ; for(i=1;i<(uint16_t)(xtal*143-2);i++)
0138 41E0 ldi R20,1
013A 50E0 ldi R21,0
013C 02C0 xjmp L32
013E L29:
013E .dbline 158
013E ; ;
013E L30:
013E .dbline 157
013E 4F5F subi R20,255 ; offset = 1
0140 5F4F sbci R21,255
0142 L32:
0142 .dbline 157
0142 86E7 ldi R24,1142
0144 94E0 ldi R25,4
0146 4817 cp R20,R24
0148 5907 cpc R21,R25
014A C8F3 brlo L29
014C X6:
014C .dbline 159
014C ; }
014C L27:
014C .dbline 155
014C 1801 movw R2,R16
014E 0150 subi R16,1
0150 1040 sbci R17,0
0152 2220 tst R2
0154 89F7 brne L26
0156 3320 tst R3
0158 79F7 brne L26
015A X7:
015A .dbline -2
015A L25:
015A .dbline 0 ; func end
015A 5991 ld R21,y+
015C 4991 ld R20,y+
015E 0895 ret
0160 .dbsym r i 20 i
0160 .dbsym r ms 16 i
0160 .dbend
0160 .dbfile E:\MyDesign\ICCAVR\ATmega16_DEV\DS1302\DS18B20.h
0160 .dbfunc e Temp_display _Temp_display fV
.area func_lit(rom, con, rel)
0000 L69:
0000 E800 .word `L37
0002 F000 .word `L39
0004 F800 .word `L41
0006 0001 .word `L43
0008 0801 .word `L45
000A 1001 .word `L47
000C 1801 .word `L49
000E 2001 .word `L51
0010 2801 .word `L53
0012 3001 .word `L55
0014 3801 .word `L57
0016 4001 .word `L59
0018 4801 .word `L61
001A 5001 .word `L63
001C 5801 .word `L65
001E 6001 .word `L67
.area text(rom, con, rel)
; temp_decimal -> R20
; temp_num -> R12
; temp_l -> R22
; temp_h -> R10
; Th -> R22
; Tl -> R12
.even
0160 _Temp_display::
0160 0E940000 xcall push_xgsetF03C
0164 622F mov R22,R18
0166 C02E mov R12,R16
0168 2297 sbiw R28,2
016A .dbline -1
016A .dbline 18
016A ; /**************************************************
016A ; *Progect: Temperature measure with DS18B20
016A ; */
016A ; #include <iom16v.h>
016A ; #include <macros.h>
016A ; #include "def.h"
016A ;
016A ; void Delay_us(uint16_t us);
016A ; uint8_t Init_18b20(void);
016A ; uint8_t Read_1_byte(void);
016A ; void Write_1_byte(uint8_t cmd);
016A ; void Write_1(void);
016A ; void Write_0(void);
016A ; void Temperature(uint8_t Th,uint8_t Tl);
016A ; void Temp_display(uint8_t Tl,uint8_t Th);
016A ; /*************************************************/
016A ; void Temp_display(uint8_t Tl,uint8_t Th)
016A ; {
016A .dbline 20
016A ; uint8_t temp_h,temp_l,temp_num,temp_decimal;
016A ; temp_decimal=Tl;
016A 4C2D mov R20,R12
016C .dbline 21
016C ; temp_h=Th<<4;
016C 862F mov R24,R22
016E 8F70 andi R24,#0x0F
0170 8295 swap R24
0172 .dbline 22
0172 ; temp_l=Tl>>4;
0172 6C2D mov R22,R12
0174 6295 swap R22
0176 6F70 andi R22,#0x0F
0178 .dbline 23
0178 ; temp_num=(temp_h|temp_l);
0178 C82E mov R12,R24
017A C62A or R12,R22
017C .dbline 24
017C ; temp_decimal&=0x0f;
017C 4F70 andi R20,15
017E .dbline 25
017E ; temp_h=(temp_num/10);
017E 1AE0 ldi R17,10
0180 0C2D mov R16,R12
0182 0E940000 xcall div8u
0186 A02E mov R10,R16
0188 .dbline 26
0188 ; temp_l=(temp_num%10);
0188 1AE0 ldi R17,10
018A 0C2D mov R16,R12
018C 0E940000 xcall mod8u
0190 602F mov R22,R16
0192 .dbline 27
0192 ; LCD_write_byte(0,temp_h+48);
0192 2A2D mov R18,R10
0194 205D subi R18,208 ; addi 48
0196 0027 clr R16
0198 58DF xcall _LCD_write_byte
019A .dbline 28
019A ; LCD_write_byte(0,temp_l+48);
019A 262F mov R18,R22
019C 205D subi R18,208 ; addi 48
019E 0027 clr R16
01A0 54DF xcall _LCD_write_byte
01A2 .dbline 29
01A2 ; switch(temp_decimal)
01A2 5527 clr R21
01A4 4030 cpi R20,0
01A6 E0E0 ldi R30,0
01A8 5E07 cpc R21,R30
01AA 0CF4 brge X11
01AC 90C0 xjmp L34
01AE X11:
01AE X8:
01AE 8FE0 ldi R24,15
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -