📄 shiyan.lis
字号:
.module shiyan.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\shiyan.c
.area data(ram, con, rel)
0000 .dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\shiyan.c
0000 _dispcode::
0000 .blkb 17
.area idata
0000 30313233343536373839414243444546 .byte 48,49,50,51,52,53,54,55,56,57,'A,'B,'C,'D,'E,'F
0010 00 .byte 0
.area data(ram, con, rel)
0011 .dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\shiyan.c
0011 .dbsym e dispcode _dispcode A[17:17]c
0011 _str1::
0011 .blkb 12
.area idata
0011 6E756D6265722069733A2000 .byte 'n,'u,'m,'b,'e,'r,32,'i,'s,58,32,0
.area data(ram, con, rel)
001D .dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\shiyan.c
001D .dbsym e str1 _str1 A[12:12]c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\shiyan.c
0000 .dbfunc e delay1ms _delay1ms fV
0000 ; j -> R20,R21
0000 ; i -> R16,R17
.even
0000 _delay1ms::
0000 4A93 st -y,R20
0002 5A93 st -y,R21
0004 .dbline -1
0004 .dbline 15
0004 ; #include<iom16v.h>
0004 ; #define uchar unsigned char
0004 ; #define uint unsigned int
0004 ; #define RS_1 PORTA|=(1<<3)
0004 ; #define RS_0 PORTA&=~(1<<3)
0004 ; #define RW_1 PORTA|=(1<<4)
0004 ; #define RW_0 PORTA&=~(1<<4)
0004 ; #define EN_1 PORTA|=(1<<5)
0004 ; #define EN_0 PORTA&=~(1<<5)
0004 ; unsigned char dispcode[]="0123456789ABCDEF";
0004 ; unsigned char str1[]={"number is: "};
0004 ;
0004 ; /*************************lcd1602程序**************************/
0004 ; void delay1ms(uint i)//延时1毫秒(不够精确的)
0004 ; {
0004 .dbline 17
0004 ; unsigned int j;
0004 ; for(;i>0;i--)
0004 0BC0 xjmp L5
0006 L2:
0006 .dbline 18
0006 ; for(j=0;j<1142;j++);
0006 4427 clr R20
0008 5527 clr R21
000A 02C0 xjmp L9
000C L6:
000C .dbline 18
000C L7:
000C .dbline 18
000C 4F5F subi R20,255 ; offset = 1
000E 5F4F sbci R21,255
0010 L9:
0010 .dbline 18
0010 4637 cpi R20,118
0012 E4E0 ldi R30,4
0014 5E07 cpc R21,R30
0016 D0F3 brlo L6
0018 X0:
0018 L3:
0018 .dbline 17
0018 0150 subi R16,1
001A 1040 sbci R17,0
001C L5:
001C .dbline 17
001C 0030 cpi R16,0
001E 0107 cpc R16,R17
0020 91F7 brne L2
0022 X1:
0022 .dbline -2
0022 L1:
0022 .dbline 0 ; func end
0022 5991 ld R21,y+
0024 4991 ld R20,y+
0026 0895 ret
0028 .dbsym r j 20 i
0028 .dbsym r i 16 i
0028 .dbend
0028 .dbfunc e wr_com _wr_com fV
0028 ; com -> R10
.even
0028 _wr_com::
0028 AA92 st -y,R10
002A A02E mov R10,R16
002C .dbline -1
002C .dbline 21
002C ; }
002C ; void wr_com(unsigned char com)//写指令//
002C ; {
002C .dbline 22
002C ; delay1ms(1);
002C 01E0 ldi R16,1
002E 10E0 ldi R17,0
0030 E7DF xcall _delay1ms
0032 .dbline 23
0032 ; RS_0;
0032 DB98 cbi 0x1b,3
0034 .dbline 24
0034 ; RW_0;
0034 DC98 cbi 0x1b,4
0036 .dbline 25
0036 ; EN_0;
0036 DD98 cbi 0x1b,5
0038 .dbline 26
0038 ; PORTB=com;
0038 A8BA out 0x18,R10
003A .dbline 27
003A ; delay1ms(1);
003A 01E0 ldi R16,1
003C 10E0 ldi R17,0
003E E0DF xcall _delay1ms
0040 .dbline 28
0040 ; EN_1;
0040 DD9A sbi 0x1b,5
0042 .dbline 29
0042 ; delay1ms(1);
0042 01E0 ldi R16,1
0044 10E0 ldi R17,0
0046 DCDF xcall _delay1ms
0048 .dbline 30
0048 ; EN_0;
0048 DD98 cbi 0x1b,5
004A .dbline -2
004A L10:
004A .dbline 0 ; func end
004A A990 ld R10,y+
004C 0895 ret
004E .dbsym r com 10 c
004E .dbend
004E .dbfunc e wr_dat _wr_dat fV
004E ; dat -> R10
.even
004E _wr_dat::
004E AA92 st -y,R10
0050 A02E mov R10,R16
0052 .dbline -1
0052 .dbline 33
0052 ; }
0052 ; void wr_dat(unsigned char dat)//写数据//
0052 ; {
0052 .dbline 34
0052 ; delay1ms(1);
0052 01E0 ldi R16,1
0054 10E0 ldi R17,0
0056 D4DF xcall _delay1ms
0058 .dbline 35
0058 ; RS_1;
0058 DB9A sbi 0x1b,3
005A .dbline 36
005A ; RW_0;
005A DC98 cbi 0x1b,4
005C .dbline 37
005C ; EN_0;
005C DD98 cbi 0x1b,5
005E .dbline 38
005E ; PORTB=dat;
005E A8BA out 0x18,R10
0060 .dbline 39
0060 ; delay1ms(1);
0060 01E0 ldi R16,1
0062 10E0 ldi R17,0
0064 CDDF xcall _delay1ms
0066 .dbline 40
0066 ; EN_1;
0066 DD9A sbi 0x1b,5
0068 .dbline 41
0068 ; delay1ms(1);
0068 01E0 ldi R16,1
006A 10E0 ldi R17,0
006C C9DF xcall _delay1ms
006E .dbline 42
006E ; EN_0;
006E DD98 cbi 0x1b,5
0070 .dbline -2
0070 L11:
0070 .dbline 0 ; func end
0070 A990 ld R10,y+
0072 0895 ret
0074 .dbsym r dat 10 c
0074 .dbend
0074 .dbfunc e lcd_init _lcd_init fV
.even
0074 _lcd_init::
0074 .dbline -1
0074 .dbline 45
0074 ; }
0074 ; void lcd_init()//初始化设置//
0074 ; {
0074 .dbline 46
0074 ; DDRB|=0xFF; /*I/O口方向设置*/
0074 87B3 in R24,0x17
0076 8F6F ori R24,255
0078 87BB out 0x17,R24
007A .dbline 47
007A ; DDRA|=(1<<3)|(1<<4)|(1<<5);
007A 8AB3 in R24,0x1a
007C 8863 ori R24,56
007E 8ABB out 0x1a,R24
0080 .dbline 48
0080 ; delay1ms(15);
0080 0FE0 ldi R16,15
0082 10E0 ldi R17,0
0084 BDDF xcall _delay1ms
0086 .dbline 49
0086 ; wr_com(0x38);delay1ms(5);
0086 08E3 ldi R16,56
0088 CFDF xcall _wr_com
008A .dbline 49
008A 05E0 ldi R16,5
008C 10E0 ldi R17,0
008E B8DF xcall _delay1ms
0090 .dbline 50
0090 ; wr_com(0x08);delay1ms(5);
0090 08E0 ldi R16,8
0092 CADF xcall _wr_com
0094 .dbline 50
0094 05E0 ldi R16,5
0096 10E0 ldi R17,0
0098 B3DF xcall _delay1ms
009A .dbline 51
009A ; wr_com(0x01);delay1ms(5);
009A 01E0 ldi R16,1
009C C5DF xcall _wr_com
009E .dbline 51
009E 05E0 ldi R16,5
00A0 10E0 ldi R17,0
00A2 AEDF xcall _delay1ms
00A4 .dbline 52
00A4 ; wr_com(0x06);delay1ms(5);
00A4 06E0 ldi R16,6
00A6 C0DF xcall _wr_com
00A8 .dbline 52
00A8 05E0 ldi R16,5
00AA 10E0 ldi R17,0
00AC A9DF xcall _delay1ms
00AE .dbline 53
00AE ; wr_com(0x0c);delay1ms(5);
00AE 0CE0 ldi R16,12
00B0 BBDF xcall _wr_com
00B2 .dbline 53
00B2 05E0 ldi R16,5
00B4 10E0 ldi R17,0
00B6 A4DF xcall _delay1ms
00B8 .dbline -2
00B8 L12:
00B8 .dbline 0 ; func end
00B8 0895 ret
00BA .dbend
00BA .dbfunc e display _display fV
00BA ; p -> R20,R21
.even
00BA _display::
00BA 4A93 st -y,R20
00BC 5A93 st -y,R21
00BE A801 movw R20,R16
00C0 .dbline -1
00C0 .dbline 57
00C0 ; }
00C0 ;
00C0 ; void display(unsigned char *p)//显示//
00C0 ; {
00C0 08C0 xjmp L15
00C2 L14:
00C2 .dbline 59
00C2 ; while(*p!='\0')
00C2 ; {
00C2 .dbline 60
00C2 ; wr_dat(*p);
00C2 FA01 movw R30,R20
00C4 0081 ldd R16,z+0
00C6 C3DF xcall _wr_dat
00C8 .dbline 61
00C8 ; p++;
00C8 4F5F subi R20,255 ; offset = 1
00CA 5F4F sbci R21,255
00CC .dbline 62
00CC ; delay1ms(1);
00CC 01E0 ldi R16,1
00CE 10E0 ldi R17,0
00D0 97DF xcall _delay1ms
00D2 .dbline 63
00D2 ; }
00D2 L15:
00D2 .dbline 58
00D2 FA01 movw R30,R20
00D4 2080 ldd R2,z+0
00D6 2220 tst R2
00D8 A1F7 brne L14
00DA X2:
00DA .dbline -2
00DA L13:
00DA .dbline 0 ; func end
00DA 5991 ld R21,y+
00DC 4991 ld R20,y+
00DE 0895 ret
00E0 .dbsym r p 20 pc
00E0 .dbend
00E0 .dbfunc e delay_18B20 _delay_18B20 fV
00E0 ; time -> R16,R17
.even
00E0 _delay_18B20::
00E0 .dbline -1
00E0 .dbline 68
00E0 ; }
00E0 ;
00E0 ; /******************************ds1820程序***************************************/
00E0 ; void delay_18B20(int time)
00E0 ; {
00E0 L18:
00E0 .dbline 70
00E0 ; do
00E0 ; time--;
00E0 0150 subi R16,1
00E2 1040 sbci R17,0
00E4 L19:
00E4 .dbline 71
00E4 ; while(time>1);
00E4 81E0 ldi R24,1
00E6 90E0 ldi R25,0
00E8 8017 cp R24,R16
00EA 9107 cpc R25,R17
00EC CCF3 brlt L18
00EE X3:
00EE .dbline -2
00EE L17:
00EE .dbline 0 ; func end
00EE 0895 ret
00F0 .dbsym r time 16 I
00F0 .dbend
00F0 .dbfunc e ds1820rst _ds1820rst fc
00F0 ; ack -> R20
.even
00F0 _ds1820rst::
00F0 4A93 st -y,R20
00F2 .dbline -1
00F2 .dbline 74
00F2 ; }
00F2 ; unsigned char ds1820rst()/*ds1820复位*/
00F2 ; {
00F2 .dbline 76
00F2 ; unsigned char ack;
00F2 ; DDRA|=0x01;
00F2 D09A sbi 0x1a,0
00F4 .dbline 77
00F4 ; PORTA&=0xfe;
00F4 8BB3 in R24,0x1b
00F6 8E7F andi R24,254
00F8 8BBB out 0x1b,R24
00FA .dbline 78
00FA ; delay_18B20(500);
00FA 04EF ldi R16,500
00FC 11E0 ldi R17,1
00FE F0DF xcall _delay_18B20
0100 .dbline 79
0100 ; PORTA|=0x01;
0100 D89A sbi 0x1b,0
0102 .dbline 80
0102 ; DDRA&=0xfe;
0102 8AB3 in R24,0x1a
0104 8E7F andi R24,254
0106 8ABB out 0x1a,R24
0108 .dbline 81
0108 ; delay_18B20(75);
0108 0BE4 ldi R16,75
010A 10E0 ldi R17,0
010C E9DF xcall _delay_18B20
010E .dbline 82
010E ; ack=PINA;
010E 49B3 in R20,0x19
0110 .dbline 83
0110 ; ack&=0x01;
0110 4170 andi R20,1
0112 .dbline 84
0112 ; delay_18B20(500);
0112 04EF ldi R16,500
0114 11E0 ldi R17,1
0116 E4DF xcall _delay_18B20
0118 .dbline 85
0118 ; return ack;
0118 042F mov R16,R20
011A .dbline -2
011A L21:
011A .dbline 0 ; func end
011A 4991 ld R20,y+
011C 0895 ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -