📄 13组源程序.txt
字号:
;**************比较密码真假********************
bijiao
clrf mm6
movf m1,0
subwf ym1,0
btfss status,z
return ;密码错误警示
incf mm6,1
movf m2,0
subwf ym2,0
btfss status,z
return
incf mm6,1
movf m3,0
subwf ym3,0
btfss status,z
return ;密码错误警示
incf mm6,1
movf m4,0
subwf ym4,0
btfss status,z
return ;密码错误警示
incf mm6,1
movf m5,0
subwf ym5,0
btfss status,z
return ;密码错误警示
incf mm6,1
movf m6,0
subwf ym6,0
btfss status,z
return ;密码错误警示
incf mm6,1
return
;*************输出密码正确*******************
showstring2
movlw 049h ;开锁状态显绿灯
movwf portc
call clearcommand1
clrf temp_reg
waitchar2
call stringtable2
call sendchar
incf temp_reg,1
movlw 0x0d
subwf temp_reg,0
btfss status,z
goto waitchar2
return
;***************输出密码错误******************
showwrong
incf count3,f
movlw 024h
movwf portc ;密码错误显红灯
movf count3,w
sublw 03h
btfsc status,z
call baojing
call clearcommand1
call showstring3
jian2
call jian
sublw 0bh ;识别按键是否为'B'
btfss status,z
goto jian2
goto line2
showstring3
clrf temp_reg
waitchar3
call stringtable3
call sendchar
incf temp_reg,1
movlw 0x0d
subwf temp_reg,0
btfss status,z
goto waitchar3
return
;********************************************
;***************报警子程序*******************
baojing
bsf status,rp0
clrf trisa
bcf status,rp0
movlw .250
movwf count3
movlw .6
movwf count4
call alarm
goto mainline
;*************************************
alarm
bsf porta,3
call delay1ms
bcf porta,3
call delay1ms
decfsz count3,1
goto alarm
call delay250ms
call delay250ms
movlw .250
movwf count3
decfsz count4,1
goto alarm
return
;********************************************
;***************TMR0延时1ms******************
delay1ms
bsf status,rp0
movlw 07h
movwf option_reg
bcf status,rp0
movlw 07h
bcf intcon,2
movlw tmr0b
movwf tmr0
loop5
btfss intcon,2
goto loop5
return
;***************TMR0延时250ms*****************
delay250ms
bsf status,rp0
movlw 07h
movwf option_reg
bcf status,rp0
movlw 07h
bcf intcon,2
movlw tmr0c
movwf tmr0
loop6
btfss intcon,2
goto loop6
return
;*********************************************************
;*****************对应密码输出'******'********************
xianmima
bsf status,rp0
bcf status,rp1 ;体1
clrf trise ;E,D输出口定义
clrf trisd
bcf status,rp0 ;体0
movlw 03h
movwf porte
movlw 2ah ;输出'*'号键
movwf portd
movlw 00h
movwf porte
call delay4ms
return
;*************************************************
line5
nop
jian3
call jian
sublw 0bh ;识别按键是否为'B'
btfss status,z
goto jian3
call showstring4 ;输出更改密码
jiancd
call jian ;识别按键'C'为更改密码,'D'为不更改密码
movwf gengkz
sublw 0ch
btfss status,z
call yanzhengd
call clearcommand1 ;清屏
call showstring1 ;输出提示语'ENTER THE CODE'
movlw 02h ;光标换行
movwf porte
movlw 0c0h
movwf portd
movlw 00h
movwf porte
call delay4ms
call jian ;键盘扫描,第一遍输入新密码
call cunm1
call jian
call cunm2
call jian
call cunm3
call jian
call cunm4
call jian
call cunm5
call jian
call cunm6
jian5
call jian
sublw 0bh ;识别按键是否为'B'
btfss status,z
goto jian5
call clearcommand1 ;清屏
call showstring1 ;输出提示语'ENTER THE CODE'
movlw 02h ;光标换行
movwf porte
movlw 0c0h
movwf portd
movlw 00h
movwf porte
call delay4ms
call jian ;键盘扫描,第二遍输入新密码
call cunym1
call xianmima
call jian
call cunym2
call xianmima
call jian
call cunym3
call xianmima
call jian
call cunym4
call xianmima
call jian
call cunym5
call xianmima
call jian
call cunym6
call xianmima
jian6
call jian
sublw 0bh ;识别按键是否为'B'
btfss status,z
goto jian6
call bijiao ;比较两次输入密码是否相同
movf mm6,0
sublw 06h
btfss status,z ;mm6等于六,前后两次输入新密码相同。mm6不等于六,前后两次输入新密码不同
call showwrong1 ;前后两次输入新密码不同,返回重新输入"rewrite is failed"
call showstring5 ;前后两次输入新密码相同,输出更改密码成功 "rewrite id success"
call mimacuncu ;存储新密码
jian8
call jian
sublw 0bh ;识别按键是否为'B'
btfss status,z
goto jian8
goto line6
;*******************************************************************
;****************识别按键是否为D,进入程序退出**********************
yanzhengd
movf gengkz,0
sublw 0dh
btfss status,z
goto jiancd ;识别按键是'C'还是'D'
goto line6 ;退出"exit"
;*****************输出更改密码语句**********************
showstring4
call clearcommand1 ;清屏
clrf temp_reg ;清0,控制输出字符数量
waitchar4
call stringtable4 ;查表"rewrite code"
call sendchar ;送显子程序
incf temp_reg,1 ;字符量加1
movlw 0x0c
subwf temp_reg,0 ;字符是否送完
btfss status,z
goto waitchar4
return
;*************输出更改密码成功*******************
showstring5
call clearcommand1 ;清屏
clrf temp_reg ;清0,控制输出字符数量
waitchar5
call stringtable5 ;查表"rewrite success"
call sendchar ;送显子程序
incf temp_reg,1 ;字符量加1
movlw 0x0f
subwf temp_reg,0 ;字符是否送完
btfss status,z
goto waitchar5
return
;**************输出更改密码失败********************
showwrong1
call clearcommand1 ;清屏
call showstring6
goto jian3
showstring6
clrf temp_reg ;清0,控制输出字符数量
waitchar6
call stringtable6 ;查表"rewrite failed"
call sendchar ;送显子程序
incf temp_reg,1 ;字符量加1
movlw 0x0e
subwf temp_reg,0 ;字符是否送完
btfss status,z
goto waitchar6
return
;********************************************
;*****************密码存储*******************
mimacuncu
clrf addr ;addr清0,密码存储从00开始
movf m1,w
movwf mvalue
call xiemima
movf m2,w
movwf mvalue
call xiemima
movf m3,w
movwf mvalue
call xiemima
movf m4,w
movwf mvalue
call xiemima
movf m5,w
movwf mvalue
call xiemima
movf m6,w
movwf mvalue
call xiemima
return
xiemima ;写入EEPROM
bsf status,rp0 ;体3
bsf status,rp1
btfsc eecon1,wr ;上一次写操作是否完成
goto $-1 ;没有完成,返回继续检测
bcf status,rp0 ;体2
movf mvalue,w ;取密码
movwf eedata ;送数据寄存器
movf addr,w ;取地址
movwf eeadr ;送地址寄存器
bsf status,rp0 ;体3
bcf eecon1,eepgd ;选定EEPROM为访问对象
bsf eecon1,wren ;开放写操作使能控制
movlw 55h
movwf eecon2
movlw 0aah
movwf eecon2
bsf eecon1,wr ;启动写操作
bcf eecon1,wren ;禁止写操作发生
bcf status,rp1 ;体0
bcf status,rp0
incf addr,f ;地址加1
return
;*****************************************
line6
call clearcommand1 ;清屏
call showstring7 ;输出提示语'EXIT'
call delay4ms
jian9
call jian
sublw 0bh ;识别按键是否为'B'
btfss status,z
goto jian9
call clearcommand1 ;清屏
movlw 092h ;黄灯亮 表示上锁
movwf portc
bsf status,rp0 ;体1
bcf status,rp1
movlw 07h ;设置选项寄存器:INT和RB0下降延触发
movwf option_reg
bsf status,rp0 ;体0
movlw 10h ;开放INT中断使能位
movwf intcon
sleep ;进入睡眠状态
nop
bcf intcon,1 ;INT中断标志位清0
goto mainline ;重新进入程序
;*****************输出退出程序************************
showstring7
clrf temp_reg
waitchar7
call stringtable7 ;显示"exit"
call sendchar
incf temp_reg,1
movlw 0x04
subwf temp_reg,0
btfss status,z
goto waitchar7
return
;******************程序结束**************************
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -