⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shiyan.lis

📁 电机的不同转动轻快
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -