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

📄 12864串口.lis

📁 avr基础程序大全
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module _12864串口.c
                        .area text(rom, con, rel)
 0000                   .dbfile 12864串口.c
 0000                   .dbfile E:\AVR自编程序\11avr实验板\1812864串口\12864串口.c
 0000                   .dbfunc e delay _delay fV
                        .even
 0000           _delay::
 0000                   .dbline -1
 0000                   .dbline 15
 0000           ; #include <iom16v.h>
 0000           ; #include <macros.h>
 0000           ; #define  uchar unsigned char
 0000           ; #define  uint  unsigned int
 0000           ; 
 0000           ; #define clk 7
 0000           ; #define set_clk PORTC |= BIT(clk)       
 0000           ; #define clr_clk PORTC &= ~BIT(clk)   
 0000           ; 
 0000           ; #define sid 6
 0000           ; #define clr_sid PORTC &= ~BIT(sid)  
 0000           ; #define set_sid PORTC |= BIT(sid)     
 0000           ; 
 0000           ; void delay()
 0000           ; {
 0000                   .dbline 16
 0000           ;       NOP();
 0000 0000              nop
 0002                   .dbline 17
 0002           ;       NOP();
 0002 0000              nop
 0004                   .dbline 18
 0004           ;       NOP();
 0004 0000              nop
 0006                   .dbline 19
 0006           ;       NOP();
 0006 0000              nop
 0008                   .dbline 20
 0008           ;       NOP();
 0008 0000              nop
 000A                   .dbline -2
 000A           L1:
 000A                   .dbline 0 ; func end
 000A 0895              ret
 000C                   .dbend
 000C                   .dbfunc e delay_us _delay_us fV
 000C           ;              i -> R16,R17
                        .even
 000C           _delay_us::
 000C                   .dbline -1
 000C                   .dbline 24
 000C           ;       
 000C           ; }
 000C           ; void delay_us(uint i)
 000C           ; {
 000C           L3:
 000C                   .dbline 26
 000C           ;       while(i--)
 000C           ;        {;;;;;;;;}
 000C                   .dbline 26
 000C                   .dbline 26
 000C                   .dbline 26
 000C                   .dbline 26
 000C                   .dbline 26
 000C                   .dbline 26
 000C                   .dbline 26
 000C                   .dbline 26
 000C                   .dbline 26
 000C           L4:
 000C                   .dbline 25
 000C 1801              movw R2,R16
 000E 0150              subi R16,1
 0010 1040              sbci R17,0
 0012 2220              tst R2
 0014 D9F7              brne L3
 0016 3320              tst R3
 0018 C9F7              brne L3
 001A           X0:
 001A                   .dbline -2
 001A           L2:
 001A                   .dbline 0 ; func end
 001A 0895              ret
 001C                   .dbsym r i 16 i
 001C                   .dbend
 001C                   .dbfunc e delay_ms _delay_ms fV
 001C           ;              a -> R20,R21
 001C           ;              i -> R16,R17
                        .even
 001C           _delay_ms::
 001C 4A93              st -y,R20
 001E 5A93              st -y,R21
 0020                   .dbline -1
 0020                   .dbline 29
 0020           ; }
 0020           ; void delay_ms(uint i)
 0020           ; {
 0020                   .dbline 31
 0020           ;       uint a;
 0020           ;       for(;i;i--)
 0020 0BC0              xjmp L10
 0022           L7:
 0022                   .dbline 32
 0022           ;               {
 0022                   .dbline 33
 0022           ;               for(a=0;a<1141;a++);
 0022 4427              clr R20
 0024 5527              clr R21
 0026 02C0              xjmp L14
 0028           L11:
 0028                   .dbline 33
 0028           L12:
 0028                   .dbline 33
 0028 4F5F              subi R20,255  ; offset = 1
 002A 5F4F              sbci R21,255
 002C           L14:
 002C                   .dbline 33
 002C 4537              cpi R20,117
 002E E4E0              ldi R30,4
 0030 5E07              cpc R21,R30
 0032 D0F3              brlo L11
 0034           X1:
 0034                   .dbline 34
 0034           ;               }
 0034           L8:
 0034                   .dbline 31
 0034 0150              subi R16,1
 0036 1040              sbci R17,0
 0038           L10:
 0038                   .dbline 31
 0038 0030              cpi R16,0
 003A 0107              cpc R16,R17
 003C 91F7              brne L7
 003E           X2:
 003E                   .dbline -2
 003E           L6:
 003E                   .dbline 0 ; func end
 003E 5991              ld R21,y+
 0040 4991              ld R20,y+
 0042 0895              ret
 0044                   .dbsym r a 20 i
 0044                   .dbsym r i 16 i
 0044                   .dbend
 0044                   .dbfunc e wr_bit _wr_bit fV
 0044           ;           data -> R10
 0044           ;              n -> R12
                        .even
 0044           _wr_bit::
 0044 AA92              st -y,R10
 0046 CA92              st -y,R12
 0048 A22E              mov R10,R18
 004A C02E              mov R12,R16
 004C                   .dbline -1
 004C                   .dbline 37
 004C           ; }
 004C           ; void wr_bit(uchar n,uchar data)
 004C           ; {
 004C                   .dbline 38
 004C           ;       for(;n;n--)                                             //写入位数
 004C 0BC0              xjmp L19
 004E           L16:
 004E                   .dbline 39
 004E           ;               {
 004E                   .dbline 40
 004E           ;               if(data&0x80)                            
 004E A7FE              sbrs R10,7
 0050 02C0              rjmp L20
 0052           X3:
 0052                   .dbline 41
 0052           ;                       {set_sid;}
 0052                   .dbline 41
 0052 AE9A              sbi 0x15,6
 0054                   .dbline 41
 0054 01C0              xjmp L21
 0056           L20:
 0056                   .dbline 43
 0056           ;               else
 0056           ;                       {clr_sid;}
 0056                   .dbline 43
 0056 AE98              cbi 0x15,6
 0058                   .dbline 43
 0058           L21:
 0058                   .dbline 44
 0058           ;               data=data<<1;                            
 0058 AA0C              lsl R10
 005A                   .dbline 45
 005A           ;               delay();
 005A D2DF              xcall _delay
 005C                   .dbline 46
 005C           ;               set_clk;                                 
 005C AF9A              sbi 0x15,7
 005E                   .dbline 47
 005E           ;               delay();
 005E D0DF              xcall _delay
 0060                   .dbline 48
 0060           ;               clr_clk;
 0060 AF98              cbi 0x15,7
 0062                   .dbline 49
 0062           ;               }
 0062           L17:
 0062                   .dbline 38
 0062 CA94              dec R12
 0064           L19:
 0064                   .dbline 38
 0064 CC20              tst R12
 0066 99F7              brne L16
 0068           X4:
 0068                   .dbline -2
 0068           L15:
 0068                   .dbline 0 ; func end
 0068 C990              ld R12,y+
 006A A990              ld R10,y+
 006C 0895              ret
 006E                   .dbsym r data 10 c
 006E                   .dbsym r n 12 c
 006E                   .dbend
 006E                   .dbfunc e write_shuju _write_shuju fV
 006E           ;              b -> R20
 006E           ;              a -> R10
                        .even
 006E           _write_shuju::
 006E AA92              st -y,R10
 0070 4A93              st -y,R20
 0072 422F              mov R20,R18
 0074 A02E              mov R10,R16
 0076                   .dbline -1
 0076                   .dbline 52
 0076           ; }
 0076           ; void write_shuju(uchar a,uchar b)
 0076           ; {
 0076                   .dbline 53
 0076           ;       clr_clk;
 0076 AF98              cbi 0x15,7
 0078                   .dbline 55
 0078           ; 
 0078           ;       wr_bit(5,0xFF);                                  
 0078 2FEF              ldi R18,255
 007A 05E0              ldi R16,5
 007C E3DF              xcall _wr_bit
 007E                   .dbline 57
 007E           ; 
 007E           ;       wr_bit(1,0x00);                                  
 007E 2227              clr R18
 0080 01E0              ldi R16,1
 0082 E0DF              xcall _wr_bit
 0084                   .dbline 59
 0084           ;       
 0084           ;       if(a==0)                                                 
 0084 AA20              tst R10
 0086 21F4              brne L23
 0088           X5:
 0088                   .dbline 60
 0088           ;               wr_bit(1,0x00);                          
 0088 2227              clr R18
 008A 01E0              ldi R16,1
 008C DBDF              xcall _wr_bit
 008E 03C0              xjmp L24
 0090           L23:
 0090                   .dbline 62
 0090           ;       else
 0090           ;               wr_bit(1,0x80);                          
 0090 20E8              ldi R18,128
 0092 01E0              ldi R16,1
 0094 D7DF              xcall _wr_bit
 0096           L24:
 0096                   .dbline 64
 0096           ; 
 0096           ;       wr_bit(1,0x00);                                 //写入一个0
 0096 2227              clr R18
 0098 01E0              ldi R16,1
 009A D4DF              xcall _wr_bit
 009C                   .dbline 66
 009C           ;       
 009C           ;       wr_bit(4,b);                                    //写入数据的高4位
 009C 242F              mov R18,R20
 009E 04E0              ldi R16,4

⌨️ 快捷键说明

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