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

📄 new_disp.lis

📁 我学习AVR的代码例子
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module new_disp.c
                        .area lit(rom, con, rel)
 0000           _S::
 0000 AF06              .byte 175,6
 0002 6D4F              .byte 'm,'O
 0004 C6CB              .byte 198,203
 0006 EB0E              .byte 235,14
 0008 EFCF              .byte 239,207
 000A 00                .byte 0
 000B                   .dbfile D:\avr\avr_program\disp_88i\new_disp.c
 000B                   .dbsym e S _S A[11:11]kc
                        .area text(rom, con, rel)
 0000                   .dbfile D:\avr\avr_program\disp_88i\new_disp.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 25
 0000           ; #include "iom88v.h"
 0000           ; 
 0000           ; #define SS PB2
 0000           ; #define MOSI PB3
 0000           ; #define SCK PB5
 0000           ; 
 0000           ; #define _asm asm
 0000           ; #define WDR()         asm("wdr")
 0000           ; #define SEI() asm("sei")
 0000           ; #define CLI() asm("cli")
 0000           ; 
 0000           ; #define a1 0x04
 0000           ; #define a2 0x0c
 0000           ; #define a3 0x14
 0000           ; #define a4 0x1c
 0000           ; #define a5 0x24
 0000           ; #define a6 0x2c
 0000           ; #define a7 0x34
 0000           ; #define a8 0x3c
 0000           ; #define a9 0x44
 0000           ; 
 0000           ; const char S[11]={0xaf,0x06,0x6d,0x4f,0xc6,0xcb,0xeb,0x0e,0xef,0xcf,0x00};
 0000           ; 
 0000           ; void port_init(void)//口方向设置
 0000           ;  {  
 0000                   .dbline 26
 0000           ;    DDRB  = 0xff;
 0000 8FEF              ldi R24,255
 0002 84B9              out 0x4,R24
 0004                   .dbline 27
 0004           ;    DDRC = 0X00;
 0004 2224              clr R2
 0006 27B8              out 0x7,R2
 0008                   .dbline 28
 0008           ;    PORTC=0xff;
 0008 88B9              out 0x8,R24
 000A                   .dbline 29
 000A           ;    DDRD  = 0x00;
 000A 2AB8              out 0xa,R2
 000C                   .dbline 30
 000C           ;    PORTD=0xff;
 000C 8BB9              out 0xb,R24
 000E                   .dbline -2
 000E           L1:
 000E                   .dbline 0 ; func end
 000E 0895              ret
 0010                   .dbend
 0010                   .dbfunc e delay_us _delay_us fV
 0010           ;           time -> R16,R17
                        .even
 0010           _delay_us::
 0010                   .dbline -1
 0010                   .dbline 33
 0010           ;  }
 0010           ; void delay_us(int time)//微秒级延时程序
 0010           ;  {     
 0010           L3:
 0010                   .dbline 35
 0010           ;    do
 0010           ;        {
 0010                   .dbline 36
 0010           ;          time--;
 0010 0150              subi R16,1
 0012 1040              sbci R17,0
 0014                   .dbline 37
 0014           ;        }      
 0014           L4:
 0014                   .dbline 38
 0014           ;    while (time>1);
 0014 81E0              ldi R24,1
 0016 90E0              ldi R25,0
 0018 8017              cp R24,R16
 001A 9107              cpc R25,R17
 001C CCF3              brlt L3
 001E                   .dbline -2
 001E           L2:
 001E                   .dbline 0 ; func end
 001E 0895              ret
 0020                   .dbsym r time 16 I
 0020                   .dbend
 0020                   .dbfunc e delay_ms _delay_ms fV
 0020           ;           time -> R10,R11
                        .even
 0020           _delay_ms::
 0020 00D0              rcall push_gset3x
 0022 5801              movw R10,R16
 0024                   .dbline -1
 0024                   .dbline 41
 0024           ;  }       
 0024           ; void delay_ms(unsigned int time)//毫秒级延时程序
 0024           ;  {
 0024 06C0              rjmp L8
 0026           L7:
 0026                   .dbline 43
 0026                   .dbline 44
 0026 08EE              ldi R16,1000
 0028 13E0              ldi R17,3
 002A F2DF              rcall _delay_us
 002C                   .dbline 45
 002C C501              movw R24,R10
 002E 0197              sbiw R24,1
 0030 5C01              movw R10,R24
 0032                   .dbline 46
 0032           L8:
 0032                   .dbline 42
 0032           ;    while(time!=0)
 0032 AA20              tst R10
 0034 C1F7              brne L7
 0036 BB20              tst R11
 0038 B1F7              brne L7
 003A           X0:
 003A                   .dbline -2
 003A           L6:
 003A 00D0              rcall pop_gset3x
 003C                   .dbline 0 ; func end
 003C 0895              ret
 003E                   .dbsym r time 10 i
 003E                   .dbend
 003E                   .dbfunc e SendBit _SendBit fV
 003E           ;              i -> R10
 003E           ;         bitcnt -> R12
 003E           ;            dat -> R14
                        .even
 003E           _SendBit::
 003E 00D0              rcall push_gset5x
 0040 C22E              mov R12,R18
 0042 E02E              mov R14,R16
 0044                   .dbline -1
 0044                   .dbline 54
 0044           ;        {              
 0044           ;          delay_us(1000);
 0044           ;          time--;
 0044           ;        }
 0044           ;  }/*
 0044           ; void Delay()
 0044           ;  {
 0044           ;    unsigned char i;
 0044           ;    for(i=0;i<10;i++); /*用于调整CLK 脉冲宽度*/
 0044           ;  //}
 0044           ; void SendBit(unsigned char dat,unsigned char bitcnt)
 0044           ;  {
 0044                   .dbline 56
 0044           ;    unsigned char i;
 0044           ;    CLI();
 0044 F894              cli
 0046                   .dbline 57
 0046           ;    for(i=0;i<bitcnt;i++)
 0046 AA24              clr R10
 0048 0FC0              rjmp L14
 004A           L11:
 004A                   .dbline 58
 004A           ;      {
 004A                   .dbline 59
 004A           ;        if(( dat & 0X80 ) == 0)
 004A E7FC              sbrc R14,7
 004C 02C0              rjmp L15
 004E                   .dbline 60
 004E           ;        PORTB &=(~(1<<MOSI));
 004E 2B98              cbi 0x5,3
 0050 01C0              rjmp L16
 0052           L15:
 0052                   .dbline 62
 0052           ;        else
 0052           ;        PORTB |=(1<<MOSI); /*发送数据由高位到低位传送*/
 0052 2B9A              sbi 0x5,3
 0054           L16:
 0054                   .dbline 64
 0054 0AE0              ldi R16,10
 0056 10E0              ldi R17,0
 0058 DBDF              rcall _delay_us
 005A                   .dbline 65
 005A 2D9A              sbi 0x5,5
 005C                   .dbline 67
 005C 0AE0              ldi R16,10
 005E 10E0              ldi R17,0
 0060 D7DF              rcall _delay_us
 0062                   .dbline 68
 0062 2D98              cbi 0x5,5
 0064                   .dbline 69
 0064 EE0C              lsl R14
 0066                   .dbline 70
 0066           L12:
 0066                   .dbline 57
 0066 A394              inc R10
 0068           L14:
 0068                   .dbline 57
 0068 AC14              cp R10,R12
 006A 78F3              brlo L11
 006C                   .dbline 71
 006C           ;        //Delay();
 006C           ;          delay_us(10);
 006C           ;        PORTB |=(1<<SCK); /*置时钟线为高通知被控器开始接收数位*/
 006C           ;        //Delay();
 006C           ;          delay_us(10);
 006C           ;        PORTB &=(~(1<<SCK)); /*钳住总线准备下一个数据位*/
 006C           ;        dat=dat<<1; /*发送数据左移一位*/
 006C           ;      }
 006C           ;    SEI();
 006C 7894              sei
 006E                   .dbline -2
 006E           L10:
 006E 00D0              rcall pop_gset5x
 0070                   .dbline 0 ; func end
 0070 0895              ret
 0072                   .dbsym r i 10 c
 0072                   .dbsym r bitcnt 12 c
 0072                   .dbsym r dat 14 c
 0072                   .dbend
 0072                   .dbfunc e Start_spi _Start_spi fV
                        .even
 0072           _Start_spi::
 0072                   .dbline -1
 0072                   .dbline 75
 0072           ;  }
 0072           ; 
 0072           ; void Start_spi()
 0072           ;  {
 0072                   .dbline 76
 0072           ;    PORTB |=(1<<SS);
 0072 2A9A              sbi 0x5,2
 0074                   .dbline 77
 0074           ;    PORTB |=(1<<SCK);
 0074 2D9A              sbi 0x5,5
 0076                   .dbline 78
 0076           ;    PORTB |=(1<<MOSI);
 0076 2B9A              sbi 0x5,3
 0078                   .dbline 80
 0078           ;    //Delay();
 0078           ;    delay_us(10);
 0078 0AE0              ldi R16,10
 007A 10E0              ldi R17,0
 007C C9DF              rcall _delay_us
 007E                   .dbline 81
 007E           ;    PORTB &=(~(1<<SS));PORTB &=(~(1<<SS));
 007E 2A98              cbi 0x5,2
 0080                   .dbline 81
 0080 2A98              cbi 0x5,2
 0082                   .dbline 82
 0082           ;    PORTB &=(~(1<<SCK));PORTB &=(~(1<<SCK));
 0082 2D98              cbi 0x5,5
 0084                   .dbline 82
 0084 2D98              cbi 0x5,5
 0086                   .dbline -2
 0086           L17:
 0086                   .dbline 0 ; func end
 0086 0895              ret
 0088                   .dbend
 0088                   .dbfunc e SendByte _SendByte fV
 0088           ;            dat -> R10
                        .even
 0088           _SendByte::
 0088 00D0              rcall push_gset3x
 008A A02E              mov R10,R16
 008C                   .dbline -1
 008C                   .dbline 86
 008C           ;  }
 008C           ; 
 008C           ; void SendByte(unsigned char dat)
 008C           ;  {
 008C                   .dbline 87
 008C           ;    SendBit(dat,8); /*发送字节*/
 008C 28E0              ldi R18,8
 008E 0A2D              mov R16,R10
 0090 D6DF              rcall _SendBit
 0092                   .dbline -2
 0092           L18:
 0092 00D0              rcall pop_gset3x
 0094                   .dbline 0 ; func end
 0094 0895              ret
 0096                   .dbsym r dat 10 c
 0096                   .dbend
 0096                   .dbfunc e SENDCOMA _SENDCOMA fV
 0096           ;            com -> R10
                        .even
 0096           _SENDCOMA::
 0096 00D0              rcall push_gset3x
 0098 A02E              mov R10,R16
 009A                   .dbline -1
 009A                   .dbline 91
 009A           ;  }
 009A           ; 
 009A           ; void SENDCOMA(unsigned char com)
 009A           ;  {
 009A                   .dbline 92
 009A           ;    Start_spi();
 009A EBDF              rcall _Start_spi
 009C                   .dbline 93
 009C           ;    SendBit(0X80,4); //*发送设置命令ID=100 0*
 009C 24E0              ldi R18,4
 009E 00E8              ldi R16,128
 00A0 CEDF              rcall _SendBit
 00A2                   .dbline 94
 00A2           ;    SendByte(com); //*发送命令字*
 00A2 0A2D              mov R16,R10
 00A4 F1DF              rcall _SendByte
 00A6                   .dbline -2
 00A6           L19:
 00A6 00D0              rcall pop_gset3x
 00A8                   .dbline 0 ; func end
 00A8 0895              ret
 00AA                   .dbsym r com 10 c
 00AA                   .dbend

⌨️ 快捷键说明

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