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

📄 io_init.lis

📁 你熟悉QT吗?Linux系统上领先的GUI
💻 LIS
字号:
                        .module io_init.c
                        .area text(rom, con, rel)
 0000                   .dbfile G:\mega8\atmega16\mp3_7210\io_init.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 12
 0000           ; #include <iom16v.h>
 0000           ; 
 0000           ; /***********端口初始化******************/
 0000           ; /**DDRx PORTx I/O  上拉*****************/
 0000           ; /*  0    0     I     N
 0000           ; /*  0    1     I     Y  
 0000           ; /*  1    0     O     output0
 0000           ; /*  1    1     O     output1
 0000           ; 
 0000           ; /***********端口初始化****适用于rev.a*********/
 0000           ; void port_init(void) 
 0000           ;      {
 0000                   .dbline 15
 0000           ; /*bit7=V_battery  bit6=LED1    bit5=LED2    bit4=NU
 0000           ;   bit3=VS_REST    bit2=VS_BSY  bit1=VS_CS   bit0=VS_DR/DC*/    
 0000           ;       DDRA =0b01101110;             /**/
 0000 8EE6              ldi R24,110
 0002 8ABB              out 0x1a,R24
 0004                   .dbline 16
 0004           ;         PORTA=0b00001111;         /*led on*/ 
 0004 8FE0              ldi R24,15
 0006 8BBB              out 0x1b,R24
 0008                   .dbline 20
 0008           ;         
 0008           ; /*bit7=SCK     bi6t=MISO          bit5=MOSI  bit4=LCD_reset 
 0008           ;   bit3=LCD_CS  bit2=LCD_led_CTRL  bit1=NU    bit0=MMC_CS*/
 0008           ;       DDRB =0b10111101;      /* */
 0008 8DEB              ldi R24,189
 000A 87BB              out 0x17,R24
 000C                   .dbline 21
 000C           ;         PORTB=0b11110101;       /*LCD_led on*/
 000C 85EF              ldi R24,245
 000E 88BB              out 0x18,R24
 0010                   .dbline 24
 0010           ; 
 0010           ; /*bit7~bit0=usb_data*/                  
 0010           ;         DDRC =0b00000000;       /* */
 0010 2224              clr R2
 0012 24BA              out 0x14,R2
 0014                   .dbline 25
 0014           ;         PORTC=0b00000000;       /**/
 0014 25BA              out 0x15,R2
 0016                   .dbline 29
 0016           ;         
 0016           ; /*bit7=FT_RXF  bi6t=FT_TXE  bit5=FT_WR  bit4=FT_RD 
 0016           ;   bit3=SW3     bit2=SW2     bit1=SW1    bit0=SW4*/              
 0016           ;         DDRD =0b00110000;       /**/
 0016 80E3              ldi R24,48
 0018 81BB              out 0x11,R24
 001A                   .dbline 30
 001A           ;         PORTD=0b00101111;       /*FT_WR=0 FT_RD=1*/
 001A 8FE2              ldi R24,47
 001C 82BB              out 0x12,R24
 001E                   .dbline -2
 001E                   .dbline 32
 001E           ;       
 001E           ;        }
 001E           L1:
 001E                   .dbline 0 ; func end
 001E 0895              ret
 0020                   .dbend
 0020                   .dbfunc e readkey _readkey fc
 0020           ;            key -> R16,R17
 0020           ;           temp -> R18,R19
                        .even
 0020           _readkey::
 0020                   .dbline -1
 0020                   .dbline 36
 0020           ;                
 0020           ; /**********readkey()******************/ 
 0020           ; unsigned char readkey(void)
 0020           ; {
 0020                   .dbline 38
 0020           ;       unsigned key,temp;
 0020           ;       key=(PIND&0x0f);               //用0屏蔽高4位
 0020 00B3              in R16,0x10
 0022 1127              clr R17
 0024 0F70              andi R16,15
 0026 1070              andi R17,0
 0028                   .dbline 39
 0028 2227              clr R18
 002A 3327              clr R19
 002C 02C0              xjmp L6
 002E           L3:
 002E                   .dbline 39
 002E                   .dbline 39
 002E                   .dbline 39
 002E           L4:
 002E                   .dbline 39
 002E 2F5F              subi R18,255  ; offset = 1
 0030 3F4F              sbci R19,255
 0032           L6:
 0032                   .dbline 39
 0032           ;       for (temp=0;temp<5000;temp++){;}//去抖动
 0032 2838              cpi R18,136
 0034 E3E1              ldi R30,19
 0036 3E07              cpc R19,R30
 0038 D0F3              brlo L3
 003A                   .dbline 40
 003A           ;       temp=(PIND&0x0f);
 003A 20B3              in R18,0x10
 003C 3327              clr R19
 003E 2F70              andi R18,15
 0040 3070              andi R19,0
 0042                   .dbline 41
 0042           ;       if (key!=temp) return (0);
 0042 0217              cp R16,R18
 0044 1307              cpc R17,R19
 0046 11F0              breq L7
 0048                   .dbline 41
 0048 0027              clr R16
 004A 00C0              xjmp L2
 004C           L7:
 004C                   .dbline 42
 004C           ;       return key;
 004C                   .dbline -2
 004C           L2:
 004C                   .dbline 0 ; func end
 004C 0895              ret
 004E                   .dbsym r key 16 i
 004E                   .dbsym r temp 18 i
 004E                   .dbend
 004E                   .dbfunc e delay_us _delay_us fV
 004E           ;           time -> R16,R17
                        .even
 004E           _delay_us::
 004E                   .dbline -1
 004E                   .dbline 47
 004E           ; }
 004E           ; 
 004E           ; /*********微秒级延时程序*****************/
 004E           ; void delay_us(int time)
 004E           ;        {     
 004E           L10:
 004E                   .dbline 49
 004E           ;         do
 004E           ;               {
 004E                   .dbline 50
 004E           ;                time--;
 004E 0150              subi R16,1
 0050 1040              sbci R17,0
 0052                   .dbline 51
 0052           ;               }       
 0052           L11:
 0052                   .dbline 52
 0052           ;         while (time>1);
 0052 81E0              ldi R24,1
 0054 90E0              ldi R25,0
 0056 8017              cp R24,R16
 0058 9107              cpc R25,R17
 005A CCF3              brlt L10
 005C                   .dbline -2
 005C                   .dbline 53
 005C           ;        }        
 005C           L9:
 005C                   .dbline 0 ; func end
 005C 0895              ret
 005E                   .dbsym r time 16 I
 005E                   .dbend
 005E                   .dbfunc e delay_ms _delay_ms fV
 005E           ;           time -> R20,R21
                        .even
 005E           _delay_ms::
 005E 0E940000          xcall push_gset1
 0062 A801              movw R20,R16
 0064                   .dbline -1
 0064                   .dbline 56
 0064           ; /*********毫秒级延时程序*****************/     
 0064           ; void delay_ms(unsigned int time)
 0064           ;        {
 0064 05C0              xjmp L15
 0066           L14:
 0066                   .dbline 58
 0066                   .dbline 59
 0066 04E6              ldi R16,100
 0068 10E0              ldi R17,0
 006A F1DF              xcall _delay_us
 006C                   .dbline 60
 006C 4150              subi R20,1
 006E 5040              sbci R21,0
 0070                   .dbline 61
 0070           L15:
 0070                   .dbline 57
 0070           ;         while(time!=0)
 0070 4030              cpi R20,0
 0072 4507              cpc R20,R21
 0074 C1F7              brne L14
 0076           X0:
 0076                   .dbline -2
 0076                   .dbline 62
 0076           ;                 {             
 0076           ;                  delay_us(100);
 0076           ;                  time--;
 0076           ;                 }
 0076           ;        }
 0076           L13:
 0076 0E940000          xcall pop_gset1
 007A                   .dbline 0 ; func end
 007A 0895              ret
 007C                   .dbsym r time 20 i
 007C                   .dbend

⌨️ 快捷键说明

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