📄 +_-
字号:
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 + -