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

📄 1.lis

📁 用与单片机开发,会个朋友们带来方便. 原代码驱动程序(ch451)
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module _1.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\新建文件夹\1.c
 0000                   .dbfunc e delay_1us _delay_1us fV
                        .even
 0000           _delay_1us::
 0000                   .dbline -1
 0000                   .dbline 10
 0000           ; #include <iom16v.h>
 0000           ; #define clk   4   //pd4
 0000           ; #define dat   3   //pd5
 0000           ; #define load  5   //pd6
 0000           ; #define load1 6   //pd7
 0000           ; #define XTAL 4    //晶振频率,单位MHz
 0000           ; #define uchar unsigned char
 0000           ; /*******************************延时函数***********************************/
 0000           ; void delay_1us(void)                 //1us延时函数
 0000           ;   {
 0000                   .dbline 11
 0000           ;    asm("nop");
 0000 0000              nop
 0002                   .dbline -2
 0002           L1:
 0002                   .dbline 0 ; func end
 0002 0895              ret
 0004                   .dbend
 0004                   .dbfunc e delay_nus _delay_nus fV
 0004           ;              i -> R20,R21
 0004           ;              n -> R22,R23
                        .even
 0004           _delay_nus::
 0004 00D0              rcall push_gset2
 0006 602F              mov R22,R16
 0008 712F              mov R23,R17
 000A                   .dbline -1
 000A                   .dbline 15
 000A           ;   }
 000A           ; 
 000A           ; void delay_nus(unsigned int n)       //N us延时函数
 000A           ;   {
 000A                   .dbline 16
 000A           ;    unsigned int i=0;
 000A 4427              clr R20
 000C 5527              clr R21
 000E                   .dbline 17
 000E           ;    for (i=0;i<n;i++)
 000E 03C0              rjmp L6
 0010           L3:
 0010                   .dbline 18
 0010 F7DF              rcall _delay_1us
 0012           L4:
 0012                   .dbline 17
 0012 4F5F              subi R20,255  ; offset = 1
 0014 5F4F              sbci R21,255
 0016           L6:
 0016                   .dbline 17
 0016 4617              cp R20,R22
 0018 5707              cpc R21,R23
 001A D0F3              brlo L3
 001C                   .dbline -2
 001C           L2:
 001C 00D0              rcall pop_gset2
 001E                   .dbline 0 ; func end
 001E 0895              ret
 0020                   .dbsym r i 20 i
 0020                   .dbsym r n 22 i
 0020                   .dbend
 0020                   .dbfunc e delay_1ms _delay_1ms fV
 0020           ;              i -> R16,R17
                        .even
 0020           _delay_1ms::
 0020                   .dbline -1
 0020                   .dbline 22
 0020           ;    delay_1us();
 0020           ;   }
 0020           ; 
 0020           ; void delay_1ms(void)                 //1ms延时函数
 0020           ;   {
 0020                   .dbline 24
 0020 0027              clr R16
 0022 1127              clr R17
 0024 02C0              rjmp L11
 0026           L8:
 0026                   .dbline 24
 0026           L9:
 0026                   .dbline 24
 0026 0F5F              subi R16,255  ; offset = 1
 0028 1F4F              sbci R17,255
 002A           L11:
 002A                   .dbline 24
 002A           ;    unsigned int i;
 002A           ;    for (i=0;i<(unsigned int)(XTAL*143-2);i++);
 002A 8AE3              ldi R24,570
 002C 92E0              ldi R25,2
 002E 0817              cp R16,R24
 0030 1907              cpc R17,R25
 0032 C8F3              brlo L8
 0034                   .dbline -2
 0034           L7:
 0034                   .dbline 0 ; func end
 0034 0895              ret
 0036                   .dbsym r i 16 i
 0036                   .dbend
 0036                   .dbfunc e delay_nms _delay_nms fV
 0036           ;              i -> R20,R21
 0036           ;              n -> R22,R23
                        .even
 0036           _delay_nms::
 0036 00D0              rcall push_gset2
 0038 602F              mov R22,R16
 003A 712F              mov R23,R17
 003C                   .dbline -1
 003C                   .dbline 28
 003C           ;   }
 003C           ; 
 003C           ; void delay_nms(unsigned int n)       //N ms延时函数
 003C           ; {
 003C                   .dbline 29
 003C           ;    unsigned int i=0;
 003C 4427              clr R20
 003E 5527              clr R21
 0040                   .dbline 30
 0040           ;    for (i=0;i<n;i++)
 0040 03C0              rjmp L16
 0042           L13:
 0042                   .dbline 31
 0042                   .dbline 32
 0042 EEDF              rcall _delay_1ms
 0044                   .dbline 33
 0044           L14:
 0044                   .dbline 30
 0044 4F5F              subi R20,255  ; offset = 1
 0046 5F4F              sbci R21,255
 0048           L16:
 0048                   .dbline 30
 0048 4617              cp R20,R22
 004A 5707              cpc R21,R23
 004C D0F3              brlo L13
 004E                   .dbline -2
 004E           L12:
 004E 00D0              rcall pop_gset2
 0050                   .dbline 0 ; func end
 0050 0895              ret
 0052                   .dbsym r i 20 i
 0052                   .dbsym r n 22 i
 0052                   .dbend
 0052                   .dbfunc e write _write fV
 0052           ;              i -> R10,R11
 0052           ;             ch -> y+0
 0052           ;              x -> y+10
                        .even
 0052           _write::
 0052 00D0              rcall push_arg4
 0054 00D0              rcall push_gset3
 0056 2497              sbiw R28,4
 0058                   .dbline -1
 0058                   .dbline 38
 0058           ;    {
 0058           ;       delay_1ms();
 0058           ;    }
 0058           ; }
 0058           ; /*******************************451写指令***********************************/
 0058           ; 
 0058           ; void  write(long  int x)
 0058           ; {
 0058                   .dbline 41
 0058           ;     long  int ch;
 0058           ;     int  i;
 0058           ;     ch = x;
 0058 2A84              ldd R2,y+10
 005A 3B84              ldd R3,y+11
 005C 4C84              ldd R4,y+12
 005E 5D84              ldd R5,y+13
 0060 2882              std y+0,R2
 0062 3982              std y+1,R3
 0064 4A82              std y+2,R4
 0066 5B82              std y+3,R5
 0068                   .dbline 42
 0068           ;     PORTD&= ~(1<<clk);      //  CLK
 0068 9498              cbi 0x12,4
 006A                   .dbline 43
 006A           ;       PORTD&= ~(1<<load);
 006A 9598              cbi 0x12,5
 006C                   .dbline 44
 006C           ;     for(i=0; i<12; i++)
 006C AA24              clr R10
 006E BB24              clr R11
 0070           L18:
 0070                   .dbline 45
 0070           ; {
 0070                   .dbline 46
 0070           ;         if(ch&0x001)
 0070 41E0              ldi R20,1
 0072 50E0              ldi R21,0
 0074 60E0              ldi R22,0
 0076 70E0              ldi R23,0
 0078 2880              ldd R2,y+0
 007A 3980              ldd R3,y+1
 007C 4A80              ldd R4,y+2
 007E 5B80              ldd R5,y+3
 0080 2422              and R2,R20
 0082 3522              and R3,R21
 0084 4622              and R4,R22
 0086 5722              and R5,R23
 0088 40E0              ldi R20,0
 008A 50E0              ldi R21,0
 008C 60E0              ldi R22,0
 008E 70E0              ldi R23,0
 0090 2416              cp R2,R20
 0092 3506              cpc R3,R21
 0094 4606              cpc R4,R22
 0096 5706              cpc R5,R23
 0098 81F0              breq L22
 009A                   .dbline 47
 009A           ;         {
 009A                   .dbline 48
 009A           ;             PORTD|= 0x08;   //数据为1   00100000
 009A 939A              sbi 0x12,3
 009C                   .dbline 49
 009C           ;                       ch >>= 1;
 009C 2880              ldd R2,y+0
 009E 3980              ldd R3,y+1
 00A0 4A80              ldd R4,y+2
 00A2 5B80              ldd R5,y+3
 00A4 5594              asr R5
 00A6 4794              ror R4
 00A8 3794              ror R3
 00AA 2794              ror R2
 00AC 2882              std y+0,R2
 00AE 3982              std y+1,R3
 00B0 4A82              std y+2,R4
 00B2 5B82              std y+3,R5
 00B4                   .dbline 50
 00B4           ;                       PORTD&= ~(1<<clk);
 00B4 9498              cbi 0x12,4
 00B6                   .dbline 51
 00B6           ;                       PORTD|= (1<<clk);
 00B6 949A              sbi 0x12,4
 00B8                   .dbline 53
 00B8           ;                       
 00B8           ;         }
 00B8 0FC0              rjmp L23
 00BA           L22:
 00BA                   .dbline 55
 00BA           ;         else
 00BA           ;         {
 00BA                   .dbline 56
 00BA           ;             PORTD&= ~(0x08);  //数据为0
 00BA 9398              cbi 0x12,3
 00BC                   .dbline 57
 00BC           ;                       ch >>= 1;
 00BC 2880              ldd R2,y+0
 00BE 3980              ldd R3,y+1
 00C0 4A80              ldd R4,y+2
 00C2 5B80              ldd R5,y+3
 00C4 5594              asr R5
 00C6 4794              ror R4
 00C8 3794              ror R3
 00CA 2794              ror R2
 00CC 2882              std y+0,R2
 00CE 3982              std y+1,R3
 00D0 4A82              std y+2,R4
 00D2 5B82              std y+3,R5
 00D4                   .dbline 58
 00D4           ;                       PORTD&= ~(1<<clk);
 00D4 9498              cbi 0x12,4
 00D6                   .dbline 59
 00D6           ;                       PORTD|= (1<<clk);
 00D6 949A              sbi 0x12,4
 00D8                   .dbline 61
 00D8           ;                       
 00D8           ;         }       
 00D8           L23:
 00D8                   .dbline 63
 00D8           L19:
 00D8                   .dbline 44
 00D8 8A2D              mov R24,R10
 00DA 9B2D              mov R25,R11
 00DC 0196              adiw R24,1
 00DE A82E              mov R10,R24
 00E0 B92E              mov R11,R25
 00E2                   .dbline 44
 00E2 8C30              cpi R24,12
 00E4 E0E0              ldi R30,0
 00E6 9E07              cpc R25,R30
 00E8 1CF2              brlt L18
 00EA                   .dbline 64
 00EA           ;               
 00EA           ;               }
 00EA           ;               PORTD|= 1<<load;
 00EA 959A              sbi 0x12,5
 00EC                   .dbline -2
 00EC           L17:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -