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

📄 +_-

📁 avr单片机icc写的密码锁
💻
📖 第 1 页 / 共 5 页
字号:
 0210           ;         }
 0210           L52:
 0210                   .dbline 172
 0210 6395              inc R22
 0212           L54:
 0212                   .dbline 172
 0212 6031              cpi R22,16
 0214 C8F3              brlo L51
 0216           X12:
 0216                   .dbline 176
 0216           ;    }
 0216           L48:
 0216                   .dbline 168
 0216 4395              inc R20
 0218           L50:
 0218                   .dbline 168
 0218 4032              cpi R20,32
 021A 78F3              brlo L47
 021C           X13:
 021C                   .dbline -2
 021C           L38:
 021C                   .dbline 0 ; func end
 021C 0C940000          xjmp pop_xgsetF00C
 0220                   .dbsym l k 1 c
 0220                   .dbsym r i 20 c
 0220                   .dbsym r j 22 c
 0220                   .dbsym r p 10 pc
 0220                   .dbend
 0220                   .dbfile C:\Users\Think\Desktop\新建文件夹\密码输入2\451.c
 0220                   .dbfunc e port_init451 _port_init451 fV
                        .even
 0220           _port_init451::
 0220                   .dbline -1
 0220                   .dbline 70
 0220           ; /****************************************************************
 0220           ;                 451LED、矩阵(中断式)                             
 0220           ; *****************************************************************/
 0220           ; //端口设置
 0220           ; #define ch451din0 PORTB&=~BIT(PB0)
 0220           ; #define ch451din1 PORTB|=BIT(PB0)
 0220           ; #define ch451dclk0 PORTB&=~BIT(PB1)
 0220           ; #define ch451dclk1 PORTB|=BIT(PB1)
 0220           ; #define ch451load0 PORTB&=~BIT(PB2)
 0220           ; #define ch451load1 PORTB|=BIT(PB2)
 0220           ; #define ch451dout0 PORTD&=~BIT(PD2)
 0220           ; #define ch451dout1 PORTD|=BIT(PD2)
 0220           ; // ch451控制命令集
 0220           ; #define CH451_RESET     0x0201               //复位
 0220           ; #define CH451_LEFTMOV   0x0300             //设置移动方式-左移
 0220           ; #define CH451_LEFTCYC   0x0301             //设置移动方式-左循
 0220           ; #define CH451_RIGHTMOV  0x0302             //设置移动方式-右移
 0220           ; #define CH451_RIGHTCYC  0x0303             //设置移动方式-右循        
 0220           ; #define CH451_SYSOFF    0x0400             //关显示、键盘、看门狗
 0220           ; #define CH451_SYSON1    0x0401             //开显示
 0220           ; #define CH451_SYSON2    0x0403             //开显示、键盘
 0220           ; #define CH451_SYSON3    0x0407             //开显示、键盘、看门狗功能
 0220           ; #define CH451_DSP       0x0500            //设置默认显示方式
 0220           ; #define CH451_BCD       0x058f             //设置BCD译码方式
 0220           ; #define CH451_BCD1      0x05f5           //
 0220           ; #define CH451_TWINKLE 0X0600           //设置闪烁控制
 0220           ; #define CH451_ONE 0x0603                 //1、2位闪烁
 0220           ; #define CH451_FOUR 0x0618                 //4、5位闪烁
 0220           ; #define CH451_SEVEN 0x06c0                //7、8位闪烁
 0220           ; //#define CH451_ATWINKLE  0X06ff    //全闪
 0220           ; 
 0220           ; // 数码管各位显示
 0220           ; 
 0220           ; #define CH451_DIG0 0x0800
 0220           ; #define CH451_DIG1 0x0900
 0220           ; #define CH451_DIG2 0x0a00
 0220           ; #define CH451_DIG3 0x0b00
 0220           ; #define CH451_DIG4 0x0c00
 0220           ; #define CH451_DIG5 0x0d00
 0220           ; #define CH451_DIG6 0x0e00
 0220           ; #define CH451_DIG7 0x0f00
 0220           ; //键盘控制
 0220           ; #define keycode_s1 0x45
 0220           ; #define keycode_s2 0x4d
 0220           ; #define keycode_s3 0x55
 0220           ; #define keycode_s4 0x5d
 0220           ; #define keycode_s5 0x65
 0220           ; #define keycode_s6 0x6d
 0220           ; #define keycode_s7 0x75
 0220           ; #define keycode_s8 0x7d
 0220           ; #define keycode_s9 0x46
 0220           ; #define keycode_s10 0x4e
 0220           ; #define keycode_s11 0x56
 0220           ; #define keycode_s12 0x5e
 0220           ; #define keycode_s13 0x66
 0220           ; #define keycode_s14 0x6e
 0220           ; #define keycode_s15 0x76
 0220           ; #define keycode_s16 0x7e
 0220           ; #define keycode_s17 0x47
 0220           ; #define keycode_s18 0x4f
 0220           ; #define keycode_s19 0x57
 0220           ; #define keycode_s20 0x5f
 0220           ; #define keycode_s21 0x67
 0220           ; #define keycode_s22 0x6f
 0220           ; #define keycode_s23 0x77
 0220           ; #define keycode_s24 0x7f
 0220           ; 
 0220           ; //端口初始化
 0220           ; void port_init451()
 0220           ; {  
 0220                   .dbline 71
 0220           ;    CLI();
 0220 F894              cli
 0222                   .dbline 72
 0222           ;    MCUCR=0X00;
 0222 2224              clr R2
 0224 25BE              out 0x35,R2
 0226                   .dbline 73
 0226           ;    MCUCSR=0X80;
 0226 80E8              ldi R24,128
 0228 84BF              out 0x34,R24
 022A                   .dbline 74
 022A           ;    GICR=0X00;
 022A 2BBE              out 0x3b,R2
 022C                   .dbline 75
 022C           ;    DDRB=0x07;
 022C 87E0              ldi R24,7
 022E 87BB              out 0x17,R24
 0230                   .dbline 76
 0230           ;    PORTB=0x07;
 0230 88BB              out 0x18,R24
 0232                   .dbline -2
 0232           L55:
 0232                   .dbline 0 ; func end
 0232 0895              ret
 0234                   .dbend
 0234                   .dbfunc e ch451_write _ch451_write fV
 0234           ;              a -> R10
 0234           ;              i -> R20
 0234           ;            com -> R16,R17
                        .even
 0234           _ch451_write::
 0234 AA92              st -y,R10
 0236 4A93              st -y,R20
 0238                   .dbline -1
 0238                   .dbline 84
 0238           ; 
 0238           ;    
 0238           ; }
 0238           ; 
 0238           ; //定义一个无符号整型变量存储12字节的命令字
 0238           ; //写指令程序
 0238           ; void ch451_write(uint com)
 0238           ; {
 0238                   .dbline 86
 0238           ;     uchar i,a;
 0238           ;     ch451load0;
 0238 C298              cbi 0x18,2
 023A                   .dbline 87
 023A           ;       for(i=0;i<12;i++)
 023A 4427              clr R20
 023C 0EC0              xjmp L60
 023E           L57:
 023E                   .dbline 88
 023E           ;       {
 023E                   .dbline 89
 023E           ;          a=com&1;
 023E C801              movw R24,R16
 0240 8170              andi R24,1
 0242 9070              andi R25,0
 0244 A82E              mov R10,R24
 0246                   .dbline 90
 0246           ;        if(a)
 0246 8823              tst R24
 0248 11F0              breq L61
 024A           X14:
 024A                   .dbline 91
 024A           ;        {
 024A                   .dbline 92
 024A           ;           ch451din1;
 024A C09A              sbi 0x18,0
 024C                   .dbline 93
 024C           ;          }
 024C 01C0              xjmp L62
 024E           L61:
 024E                   .dbline 95
 024E           ;        else
 024E           ;        {
 024E                   .dbline 96
 024E           ;           ch451din0;
 024E C098              cbi 0x18,0
 0250                   .dbline 97
 0250           ;        }
 0250           L62:
 0250                   .dbline 98
 0250           ;        ch451dclk0;
 0250 C198              cbi 0x18,1
 0252                   .dbline 99
 0252           ;        ch451dclk1;
 0252 C19A              sbi 0x18,1
 0254                   .dbline 100
 0254           ;          com>>=1;
 0254 1695              lsr R17
 0256 0795              ror R16
 0258                   .dbline 101
 0258           ;     }
 0258           L58:
 0258                   .dbline 87
 0258 4395              inc R20
 025A           L60:
 025A                   .dbline 87
 025A 4C30              cpi R20,12
 025C 80F3              brlo L57
 025E           X15:
 025E                   .dbline 102
 025E           ;        ch451load1;
 025E C29A              sbi 0x18,2
 0260                   .dbline -2
 0260           L56:
 0260                   .dbline 0 ; func end
 0260 4991              ld R20,y+
 0262 A990              ld R10,y+
 0264 0895              ret
 0266                   .dbsym r a 10 c
 0266                   .dbsym r i 20 c
 0266                   .dbsym r com 16 i
 0266                   .dbend
 0266                   .dbfunc e ch451_read _ch451_read fc
 0266           ;           temp -> <dead>
 0266           ;        keycode -> R16
 0266           ;              j -> R10
 0266           ;            com -> R16
 0266           ;              i -> R18
                        .even
 0266           _ch451_read::
 0266 AA92              st -y,R10
 0268                   .dbline -1
 0268                   .dbline 107
 0268           ; 
 0268           ; }
 0268           ; //读按键指令
 0268           ; uchar ch451_read()
 0268           ; {
 0268                   .dbline 109
 0268           ;     uchar i,temp,com,keycode,j;
 0268           ;     ch451load0;
 0268 C298              cbi 0x18,2
 026A                   .dbline 111
 026A           ; //读行数
 026A           ;     com=0x07;
 026A 07E0              ldi R16,7
 026C                   .dbline 112
 026C           ;     for(i=0;i<4;i++)
 026C 2227              clr R18
 026E 09C0              xjmp L67
 0270           L64:
 0270                   .dbline 113
 0270           ;     {
 0270                   .dbline 114
 0270           ;         if(com&0x01)
 0270 00FF              sbrs R16,0
 0272 02C0              rjmp L68
 0274           X16:
 0274                   .dbline 115
 0274           ;               { 
 0274                   .dbline 116
 0274           ;                  ch451din1;
 0274 C09A              sbi 0x18,0
 0276                   .dbline 117
 0276           ;         }
 0276 01C0              xjmp L69
 0278           L68:
 0278                   .dbline 119
 0278           ;               else 
 0278           ;               {
 0278                   .dbline 120
 0278           ;                  ch451din0;
 0278 C098              cbi 0x18,0
 027A                   .dbline 121
 027A           ;         }
 027A           L69:
 027A                   .dbline 122
 027A           ;               com>>=1;
 027A 0695              lsr R16
 027C                   .dbline 123
 027C           ;         ch451dclk0;
 027C C198              cbi 0x18,1
 027E                   .dbline 124
 027E           ;               ch451dclk1;
 027E C19A              sbi 0x18,1
 0280                   .dbline 125
 0280           ;       }
 0280           L65:
 0280                   .dbline 112
 0280 2395              inc R18
 0282           L67:
 0282                   .dbline 112
 0282 2430              cpi R18,4
 0284 A8F3              brlo L64
 0286           X17:
 0286                   .dbline 126
 0286           ;         ch451load1;
 0286 C29A              sbi 0x18,2
 0288                   .dbline 128
 0288           ; //读按键
 0288           ;     keycode=0;
 0288 0027              clr R16
 028A                   .dbline 129
 028A           ;     for(i=0;i<7;i++)
 028A 2227              clr R18
 028C 08C0              xjmp L73
 028E           L70:
 028E                   .dbline 130
 028E           ;     {
 028E                   .dbline 131
 028E           ;       keycode<<=1;
 028E 000F              lsl R16
 0290                   .dbline 132
 0290           ;         j=PIND;
 0290 A0B2              in R10,0x10
 0292                   .dbline 134
 0292           ;         
 0292           ;         if(j&BIT(2))
 0292 A2FE              sbrs R10,2
 0294 01C0              rjmp L74
 0296           X18:
 0296                   .dbline 135
 0296           ;            keycode++;
 0296 0395              inc R16
 0298           L74:
 0298                   .dbline 137
 0298           ;         
 0298           ;         ch451dclk0;
 0298 C198              cbi 0x18,1
 029A                   .dbline 138
 029A           ;         ch451dclk1;  
 029A C19A              sbi 0x18,1
 029C                   .dbline 139
 029C           ;     }
 029C           L71:
 029C                   .dbline 129
 029C 2395              inc R18
 029E           L73:
 029E                   .dbline 129
 029E 2730              cpi R18,7
 02A0 B0F3              brlo L70

⌨️ 快捷键说明

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