📄 zz.lis
字号:
00EA .dbline 82
00EA ; write_shuju(0,0x01); //清屏
00EA 21E0 ldi R18,1
00EC 0027 clr R16
00EE BCDF xcall _write_shuju
00F0 .dbline 83
00F0 ; delay_ms(100);
00F0 04E6 ldi R16,100
00F2 10E0 ldi R17,0
00F4 .dbline -2
00F4 L25:
00F4 .dbline 0 ; func end
00F4 90CF xjmp _delay_ms
00F6 .dbend
00F6 .dbfunc e write_hz _write_hz fV
00F6 ; s -> R20,R21
.even
00F6 _write_hz::
00F6 4A93 st -y,R20
00F8 5A93 st -y,R21
00FA A801 movw R20,R16
00FC .dbline -1
00FC .dbline 87
00FC ;
00FC ; }
00FC ; void write_hz(char *s)
00FC ; {
00FC 06C0 xjmp L28
00FE L27:
00FE .dbline 89
00FE ; while(*s)
00FE ; {
00FE .dbline 90
00FE ; write_shuju(1,*s);
00FE FA01 movw R30,R20
0100 2081 ldd R18,z+0
0102 01E0 ldi R16,1
0104 B1DF xcall _write_shuju
0106 .dbline 91
0106 ; s++;
0106 4F5F subi R20,255 ; offset = 1
0108 5F4F sbci R21,255
010A .dbline 92
010A ; }
010A L28:
010A .dbline 88
010A FA01 movw R30,R20
010C 2080 ldd R2,z+0
010E 2220 tst R2
0110 B1F7 brne L27
0112 X6:
0112 .dbline -2
0112 L26:
0112 .dbline 0 ; func end
0112 5991 ld R21,y+
0114 4991 ld R20,y+
0116 0895 ret
0118 .dbsym r s 20 pc
0118 .dbend
0118 .dbfunc e locate _locate fV
0118 ; y -> R20
0118 ; x -> R10
.even
0118 _locate::
0118 0E940000 xcall push_xgsetF00C
011C 422F mov R20,R18
011E A02E mov R10,R16
0120 .dbline -1
0120 .dbline 95
0120 ; }
0120 ; void locate(uchar x,uchar y)
0120 ; {
0120 .dbline 96
0120 ; switch(x)
0120 6A2D mov R22,R10
0122 7727 clr R23
0124 6130 cpi R22,1
0126 E0E0 ldi R30,0
0128 7E07 cpc R23,R30
012A 69F0 breq L34
012C X7:
012C 6230 cpi R22,2
012E E0E0 ldi R30,0
0130 7E07 cpc R23,R30
0132 79F0 breq L35
0134 X8:
0134 6330 cpi R22,3
0136 E0E0 ldi R30,0
0138 7E07 cpc R23,R30
013A 89F0 breq L36
013C X9:
013C 6430 cpi R22,4
013E E0E0 ldi R30,0
0140 7E07 cpc R23,R30
0142 99F0 breq L37
0144 X10:
0144 17C0 xjmp L32
0146 L34:
0146 .dbline 98
0146 ; {
0146 ; case 1:write_shuju(0,(0x80+y-1)); break;
0146 242F mov R18,R20
0148 2058 subi R18,128 ; addi 128
014A 2150 subi R18,1
014C 0027 clr R16
014E 8CDF xcall _write_shuju
0150 .dbline 98
0150 11C0 xjmp L32
0152 L35:
0152 .dbline 99
0152 ; case 2:write_shuju(0,(0x90+y-1));break;
0152 242F mov R18,R20
0154 2057 subi R18,112 ; addi 144
0156 2150 subi R18,1
0158 0027 clr R16
015A 86DF xcall _write_shuju
015C .dbline 99
015C 0BC0 xjmp L32
015E L36:
015E .dbline 100
015E ; case 3:write_shuju(0,(0x88+y-1));break;
015E 242F mov R18,R20
0160 2857 subi R18,120 ; addi 136
0162 2150 subi R18,1
0164 0027 clr R16
0166 80DF xcall _write_shuju
0168 .dbline 100
0168 05C0 xjmp L32
016A L37:
016A .dbline 101
016A ; case 4:write_shuju(0,(0x98+y-1));break;
016A 242F mov R18,R20
016C 2856 subi R18,104 ; addi 152
016E 2150 subi R18,1
0170 0027 clr R16
0172 7ADF xcall _write_shuju
0174 .dbline 101
0174 .dbline 102
0174 ; default:break;
0174 L32:
0174 .dbline -2
0174 L30:
0174 .dbline 0 ; func end
0174 0C940000 xjmp pop_xgsetF00C
0178 .dbsym r y 20 c
0178 .dbsym r x 10 c
0178 .dbend
0178 .dbfunc e cls _cls fV
.even
0178 _cls::
0178 .dbline -1
0178 .dbline 106
0178 ; }
0178 ; }
0178 ; void cls()
0178 ; {
0178 .dbline 107
0178 ; delay_us(200);
0178 08EC ldi R16,200
017A 10E0 ldi R17,0
017C 44DF xcall _delay_us
017E .dbline 108
017E ; write_shuju(0,0x01); //清屏
017E 21E0 ldi R18,1
0180 0027 clr R16
0182 72DF xcall _write_shuju
0184 .dbline 109
0184 ; delay_ms(20);
0184 04E1 ldi R16,20
0186 10E0 ldi R17,0
0188 .dbline -2
0188 L38:
0188 .dbline 0 ; func end
0188 46CF xjmp _delay_ms
018A .dbend
018A .dbfile C:\DOCUME~1\Administrator\桌面\12864_~1\adc.h
018A .dbfunc e mega16_adc _mega16_adc fi
018A ; addata -> R10,R11
.even
018A _mega16_adc::
018A AA92 st -y,R10
018C BA92 st -y,R11
018E .dbline -1
018E .dbline 6
018E ; #include <iom16v.h>
018E ; #include <macros.h>
018E ; #define uchar unsigned char
018E ; #define uint unsigned int
018E ; uint mega16_adc()
018E ; {
018E .dbline 8
018E ; uint addata;
018E ; DDRA&=~BIT(0);
018E D098 cbi 0x1a,0
0190 .dbline 9
0190 ; PORTA&=~BIT(0);
0190 D898 cbi 0x1b,0
0192 .dbline 10
0192 ; ADMUX=0x40;
0192 80E4 ldi R24,64
0194 87B9 out 0x7,R24
0196 .dbline 11
0196 ; ADCSR=0X80;
0196 80E8 ldi R24,128
0198 86B9 out 0x6,R24
019A .dbline 12
019A ; ADCSR|=BIT(6);
019A 369A sbi 0x6,6
019C L40:
019C .dbline 13
019C ; while(!(ADCSR&(BIT(4))));
019C L41:
019C .dbline 13
019C 349B sbis 0x6,4
019E FECF rjmp L40
01A0 X11:
01A0 .dbline 14
01A0 ; addata=ADCL;
01A0 A4B0 in R10,0x4
01A2 BB24 clr R11
01A4 .dbline 15
01A4 ; addata=addata+ADCH*256;
01A4 25B1 in R18,0x5
01A6 3327 clr R19
01A8 00E0 ldi R16,256
01AA 11E0 ldi R17,1
01AC 0E940000 xcall empy16s
01B0 A00E add R10,R16
01B2 B11E adc R11,R17
01B4 .dbline 16
01B4 ; return addata;
01B4 8501 movw R16,R10
01B6 .dbline -2
01B6 L39:
01B6 .dbline 0 ; func end
01B6 B990 ld R11,y+
01B8 A990 ld R10,y+
01BA 0895 ret
01BC .dbsym r addata 10 i
01BC .dbend
01BC .dbfile C:\DOCUME~1\Administrator\桌面\12864_~1\18B20.h
01BC .dbfunc e delay_10us _delay_10us fV
01BC ; i -> R16
.even
01BC _delay_10us::
01BC .dbline -1
01BC .dbline 14
01BC ; #include <iom16v.h>
01BC ; #include <macros.h>
01BC ; #define uchar unsigned char
01BC ; #define uint unsigned int
01BC ; #define DQ_IN DDRC &= ~(1 << PA3) /*设置输入*/
01BC ; #define DQ_OUT DDRC |= (1 << PA3) /*设置输出*/
01BC ; #define DQ_CLR PORTC &= ~(1 << PA3) /*置低电平*/
01BC ; #define DQ_SET PORTC |= (1 << PA3) /*置高电平*/
01BC ; #define DQ_R PINC & (1 << PA3) /*读了电平*/
01BC ;
01BC ; uchar flag;/*中断标志缓存*/
01BC ; #define delay4us {NOP();NOP();NOP();NOP();}
01BC ; #define delay10us {NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();}
01BC ; void delay_10us(unsigned char i) {
01BC .dbline 16
01BC ;
01BC ; if (i == 0) {
01BC 0023 tst R16
01BE 29F4 brne L47
01C0 X12:
01C0 .dbline 16
01C0 .dbline 17
01C0 ; return ;
01C0 09C0 xjmp L43
01C2 L46:
01C2 .dbline 19
01C2 ; }
01C2 ; while (i--) {
01C2 .dbline 20
01C2 ; delay4us;
01C2 .dbline 20
01C2 0000 nop
01C4 .dbline 20
01C4 0000 nop
01C6 .dbline 20
01C6 0000 nop
01C8 .dbline 20
01C8 0000 nop
01CA .dbline 20
01CA .dbline 20
01CA .dbline 21
01CA ; }
01CA L47:
01CA .dbline 19
01CA 202E mov R2,R16
01CC 3324 clr R3
01CE 0150 subi R16,1
01D0 2220 tst R2
01D2 B9F7 brne L46
01D4 X13:
01D4 .dbline -2
01D4 L43:
01D4 .dbline 0 ; func end
01D4 0895 ret
01D6 .dbsym r i 16 c
01D6 .dbend
01D6 .dbfunc e ds1820_reset _ds1820_reset fc
01D6 ; i -> R20
.even
01D6 _ds1820_reset::
01D6 4A93 st -y,R20
01D8 .dbline -1
01D8 .dbline 24
01D8 ; }
01D8 ; /*DS18B20复位函数*/
01D8 ; unsigned char ds1820_reset(void) {
01D8 .dbline 27
01D8 ;
01D8 ; unsigned char i;
01D8 ; flag = SREG; /*中断保护*/
01D8 2FB6 in R2,0x3f
01DA 20921800 sts _flag,R2
01DE .dbline 28
01DE ; CLI(); /*关中断*/
01DE F894 cli
01E0 .dbline 29
01E0 ; DQ_OUT;
01E0 A39A sbi 0x14,3
01E2 .dbline 30
01E2 ; DQ_CLR;
01E2 AB98 cbi 0x15,3
01E4 .dbline 31
01E4 ; delay_10us(49); /*延时500uS(480-960)*/
01E4 01E3 ldi R16,49
01E6 EADF xcall _delay_10us
01E8 .dbline 32
01E8 ; DQ_SET;
01E8 AB9A sbi 0x15,3
01EA .dbline 33
01EA ; DQ_IN;
01EA A398 cbi 0x14,3
01EC .dbline 34
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -