3×4矩阵电子密码锁的程序代码程序如何写

;********************************************;*********
*********;********************************************;显示缓冲区;LED1 EQU 6FHBUFF EQU 6EHTIMERS1 EQU 6DH ;输入回车的次数TIMERS2 EQU 6CH ;报警的次数TIMERS EQU 6BH ;输入数字的位数;LED6 EQU 6AH;密码缓冲区PS1 EQU 69HPS2 EQU 68HPS3 EQU 67HPS4 EQU 66HPS5 EQU 65HPS6 EQU 64H;AT24C02读取缓冲区AT1 EQU 63HAT2 EQU 62HAT3 EQU 61HAT4 EQU 60HAT5 EQU 5FHAT6 EQU 5EH;按键标志位F_1 BIT 20HF_2 BIT 21HF_3 BIT 22HF_4 BIT 23HBUF_FULL BIT 24H ;密码已经够六位的标志位,为1表示满CH_STATE BIT 25H ;系统更改的状态标志位,为1表示busyFLAG1 BIT 26H ;功能键标志位,为1表示功能按键。F_F1 BIT 27HF_F2 BIT 28HPSW_F BIT 29H ;密码是否正确的标志位;口资源定义SPK BIT P2.1JDQ BIT P2.3SDA BIT P2.4 ;定义串口数据端SCL BIT P2.5;灯L1 BIT P1.0L2 BIT P1.1L3 BIT P1.2;ORG 0000HAJMP MAINORG 000BH;AJMP TIMER0ORG 001BH;AJMP TIMER1ORG 0030HMAIN:MOV SP, #70HMOV TMOD, #11HMOV TH0, #3CHMOV TL0, #0B0HMOV TH1, #3CHMOV TL1, #0B0HCLR F_1 ;清除标志位CLR F_2CLR F_3CLR F_4CLR BUF_FULLCLR CH_STATECLR FLAG1CLR F_F1CLR F_F2CLR PSW_FMOV BUFF,#00H ;调用LCALL INITPS ;初始化环境LCALL INITATLCALL XSA ;调用默认显示MOV TIMERS1,#00HNOPMOV PS1, #11H ;初始化密码830620MOV PS2, #0AHMOV PS3, #02HMOV PS4, #13HMOV PS5, #0BHMOV PS6, #02HSTART:NOP ;程序开始LCALL CH_KEY ;检查键盘AJMP START ;返回CH_KEY:LCALL KS ;检查有没有按键按下JNZ LK1AJMP CH_KEYLK1:LCALL T12MSACALL KSJNZ LK2RETLK2:NOPLCALL SBIE ;按键识别子程序MOV BUFF, A ;送缓冲区以识别是数字键还是功能键?LCALL CH_KF ;判断按键功能。JB FLAG1 ,KEY_FUN ;标志为1,则为功能键;***********数字按键输入并且存放到缓冲区内等待比较***********KEY_DIG:NOP ;设一标志,辨别输入是否满;SETB TR0INC TIMERS ;输入数字的位数MOV A, TIMERSCLR CSUBB A, #01HJNZ PS_2MOV PS1, BUFF ;依照顺序存放密码AJMP NEXTPS_2:MOV A, TIMERSSUBB A, #02HCLR CJNZ PS_3MOV PS2, BUFFAJMP NEXTPS_3:MOV A, TIMERSCLR CSUBB A, #03HJNZ PS_4MOV PS3, BUFFAJMP NEXTPS_4:MOV A, TIMERSCLR CSUBB A, #04JNZ PS_5MOV PS4, BUFFAJMP NEXTPS_5:MOV A, TIMERSCLR CSUBB A, #05JNZ PS_6MOV PS5, BUFFAJMP NEXTPS_6:MOV A, TIMERSCLR CSUBB A, #06HJNZ CH_KEYMOV PS6, BUFFNEXT:LCALL XSCMOV R7, TIMERS ;比较输入的次数。CJNE R7, #06H ,FULLFULL:JC NEXT9SETB BUF_FULLMOV TIMERS,#06HCLR L3NOPCLR P2.1LCALL T100MSDSETB P2.1NOPAJMP CH_KEYNEXT9:CLR P2.1 ;密码输入一位,鸣叫一声。CLR L3LCALL T100MSD ;延时100msSETB L3SETB P2.1AJMP CH_KEY;*****************功能按键比较并且跳转*************KEY_FUN:CLR FLAG1CLR CMOV A, BUFFSUBB A, #03H ;按键CL跳转JNZ EN_CAJMP CLEN_C:CLR CMOV A, BUFF ;按键EN跳转SUBB A, #00HJNZ F1_CAJMP ENF1_C:CLR CMOV A, BUFFSUBB A, #1BHJNZ F2_CAJMP FU1F2_C:CLR CMOV A, BUFFSUBB A, #1AHJNZ F3_CAJMP FU2F3_C:CLR CMOV A, BUFFSUBB A, #19HJNZ F4_CAJMP FU3F4_C:CLR CMOV A, BUFFSUBB A, #18HJZ FU4EXIT8:NOPLJMP CH_KEY;***************开门子程序 ********************************CL:NOPSETB L3MOV BUFF, #00H ;消密码缓冲MOV TIMERS,#00HLCALL INITPS ;消除AT缓冲,加调电存储后一定要加上LCALL XSCLCALL BPLCALL BPLCALL T100MSDLCALL BPCLR FLAG1AJMP CH_KEYFU4:NOPLCALL BPLCALL T100MSDLCALL BPLCALL T100MSDLCALL BPLCALL T100MSDLCALL BPLCALL T100MSDLCALL BPCLR FLAG1AJMP CH_KEYFU3:NOPLCALL BPLCALL T100MSDLCALL BPLCALL KILLXS ;关闭显示CLR FLAG1AJMP CH_KEYFU1:NOPLCALL XSCJB F_F1, NEXT_F1CLR L1LCALL BPSETB F_F1AJMP CH_KEYNEXT_F1:SETB L1LCALL BPCLR F_F1;LCALL CH_STATE ;查看现在的状态以防误按;SETB TR1 ;报警限制暂时不开;INC F_F1CLR FLAG1AJMP CH_KEYFU2:NOPJB F_F2, NEXT_F2CLR L2LCALL BPSETB F_F2AJMP CH_KEYNEXT_F2:SETB L2LCALL BPCLR F_F2CLR FLAG1AJMP CH_KEY;***************按键的功能描述*************************EN:NOPJB BUF_FULL, GOONAJMP EXITGOON:CLR BUF_FULLJB F_F2, AT_WRON ;F2按键标志,若为1,则调用修改密码子程序。LCALL AT_RADELCALL C_PSW ;比较密码子程序JB PSW_F,OPEN ;密码比较正确,则调用开锁子程序LCALL XSDINC TIMERS2MOV R7,TIMERS2 ;密码错误,调入输入密码输入次数,准备锁定键盘CJNE R7,#03H,D0D0:JC NEXT1 ;错误次数小3次LCALL XSE ;锁定5分钟LCALL WARN2SLCALL K_1MNEXT1:LCALL WARN2S ;报警2分钟LCALL XSAEXIT:LCALL INITPSMOV BUFF, #00HCLR FLAG1MOV TIMERS, #00HAJMP CH_KEY ;跳出AT_WRON:LCALL AT_WRLCALL XSFLCALL BPLCALL T100MSDLCALL BPLCALL T500MSDLCALL KILLXSLCALL T500MSDLCALL XSFLCALL T500MSDLCALL KILLXSLCALL T500MSDLCALL XSFLCALL T500MSDNOPNOPLCALL XSAAJMP EXITOPEN:MOV A, TIMERS1CJNE A, #09H,CLT1CLT1:JC GOON1MOV TIMERS1,#00HGOON1:INC TIMERS1 ;输入回车的次数MOV TIMERS2,#00HSETB L3CLR PSW_FLCALL XSBCLR JDQ ;开门LCALL BPLCALL BPLCALL BPLCALL BPLCALL SECLCALL SECLCALL SECLCALL SECLCALL SECLCALL SECLCALL SECLCALL SECSETB JDQLCALL XSANOPAJMP EXIT;**************各类子程序********************************;**** 注意清楚缓冲区时AT1...AT6不应在初始化中执行,以 ***;**** 防两缓冲区都为0,相同开锁 ***;********************************************************CLR_BUF:MOV R7, #06HMOV R0, #6FHLOOP1:MOV A, #00HMOV @R0, ADEC R0DJNZ R7,LOOP1RET;*************初始化显示缓冲区以及其他缓冲区**************INITPS:PUSH APUSH PSWMOV R7, #06HMOV R1, #PS1MOV A, #00HINIT_PS:MOV @R1, ADEC R1DJNZ R7, INIT_PSPOP PSWPOP ACCNOPRET INITAT:PUSH ACCPUSH PSWMOV R7,#06HMOV R1,#AT1MOV A, #00HINIT_AT:MOV @R1, ADEC R1DJNZ R7, INIT_ATMOV TIMERS,#00H ;密码输入的次数清零。POP PSWPOP ACCRET;************* 按键识别子程序 ***************************SBIE:MOV R2, #0EFH ;识别按键子程序,数据送A保存,课本P146页。MOV R4, #00HLK4:MOV A, R2MOV P0, ANOPMOV A, P0JB ACC.0,LONEMOV A, #00HAJMP LKPLONE:JB ACC.1,LTWOMOV A, #08HAJMP LKPLTWO:JB ACC.2,LTHRMOV A, #10HAJMP LKPLTHR:JB ACC.3,NEXTT ;判断下一列MOV A, #18HLKP:ADD A, R4PUSH ACCLK3:ACALL KSJNZ LK3POP ACCRETNEXTT:INC R4MOV A, R2JNB ACC.7,KNDRL AMOV R2, AAJMP LK4KND:AJMP CH_KEYKS:MOV P0, #0FHNOPMOV A, P0CPL AANL A, #0FHNOPRETCH_KF:CLR CMOV A, BUFF ;判断是数字按键还是功能按键,为1表示功能键CJNE A, #17H, KYKY:JC SET_CH ;假若是数字按键则标志置为0SETB FLAG1 ;假若是功能按键则标志置为1AJMP CHKE_ENDSET_CH:CLR CMOV A, BUFFSUBB A, #00HJNZ EN_CHSETB FLAG1AJMP CH_ENDEN_CH:MOV A, BUFFSUBB A, #03HJNZ DIGSETB FLAG1AJMP CH_ENDDIG:CLR FLAG1CH_END:NOPCHKE_END:RETT12MS:MOV R7, #18HTM1:MOV R6, #0FFHTM66:DJNZ R6, TM66DJNZ R7, TM1RET;****************检验密码正误******************************C_PSW:PUSH PSWPUSH ACCMOV R2,#06HMOV R0,#PS1MOV R1,#AT1C_P:CLR CMOV A,@R0SUBB A,@R1JNZ RETURNDEC R0DEC R1DJNZ R2,C_PNOPSETB PSW_FAJMP EXIT7RETURN:CLR PSW_FEXIT7:NOPPOP ACCPOP PSWRET;×××××××××××××××××锁定,鸣笛子程序××××××××××××LOCK_1M:MOV R4,#3CH ;锁定1分钟M1_LOOP:LCALL SECDJNZ R4,M1_LOOPNOPRETWARN2S:PUSH PSWPUSH ACCMOV R5, #14H ;调用20次BP,报警2sWARN:LCALL BPDJNZ R5,WARNNOPPOP ACCPOP PSWNOPRETBP:CLR SPK ;鸣笛子程序LCALL T100MSDSETB SPKNOPRET;***************************;***** 显示子程序 ********;***************************;功能:分五屏幕显示数据,分别是XSA,XSB,XSC,XSD,XSE.代表六种状态。;锁定状态显示。XSA:PUSH ACCPUSH PSWMOV A, TIMERS1MOV DPTR, #TABMOVC A, @A+DPTRMOV SBUF, A ;送已经输入密码的次数JNB TI, $CLR TIMOV SBUF, #0FEH ;送短线JNB TI, $CLR TIMOV SBUF, #0FEH ;送短线JNB TI, $CLR TI ;送FMOV SBUF, #78HJNB TI, $CLR TIMOV SBUF, #78HJNB TI, $CLR TIMOV SBUF, #11HJNB TI, $CLR TIPOP PSWPOP ACCRET;成功开锁状态显示XSB:PUSH ACCPUSH PSWMOV A, TIMERS1MOV DPTR, #TABMOVC A, @A+DPTRMOV SBUF, AJNB TI, $CLR TIMOV SBUF, #0FEHJNB TI, $CLR TIMOV SBUF, #0FEHJNB TI, $CLR TIMOV SBUF, #10HJNB TI, $CLR TIMOV SBUF, #10HJNB TI, $CLR TIMOV SBUF, #10HJNB TI, $CLR TIPOP PSWPOP ACCRET;密码输入及修改状态XSC:PUSH ACCPUSH PSWLCALL KILLXSSETB RS1 ;切换到第三组寄存器。防止操作数读取错误。MOV R6, TIMERSMOV A, R6SUBB A, #01HJNC SC0JZ SC1SC0:MOV SBUF, #0FEHJNB TI, $CLR TISC1:MOV A, R6SUBB A, #02HJNC SC11JNZ SC2SC11:MOV SBUF,#0FEHJNB TI, $CLR TISC2:MOV A, R6SUBB A, #03HJNC SC22JNZ SC3SC22:MOV SBUF, #0FEHJNB TI, $CLR TISC3:MOV A, R6SUBB A, #04HJNC SC33JNZ SC4SC33:MOV SBUF, #0FEHJNB TI, $CLR TISC4:MOV A, R6SUBB A, #05HJNC SC44JNZ SC5SC44:MOV SBUF, #0FEHJNB TI, $CLR TISC5:MOV A, R6SUBB A, #06HJNC SC55JNZ SC6SC55:MOV SBUF, #0FEHJNB TI, $CLR TISC6:MOV A, R6SUBB A, #07HJNC SC66JNZ EXIT_CSC66:MOV SBUF, #0FEHJNB TI, $CLR TINOPNOPEXIT_C:NOPCLR RS1POP PSWPOP ACCNOPRET;密码输入错误的提示XSD:PUSH ACCPUSH PSWMOV SBUF, #98HJNB TI, $CLR TIMOV SBUF, #79HJNB TI, $CLR TIMOV SBUF, #11HJNB TI, $CLR TIMOV SBUF, #79HJNB TI, $CLR TIMOV SBUF, #79HJNB TI, $CLR TIMOV SBUF, #38HJNB TI, $CLR TIPOP PSWPOP ACCRET;锁定状态显示XSE:PUSH ACCPUSH PSWMOV SBUF, #0FEHJNB TI, $CLR TIMOV SBUF, #54HJNB TI, $CLR TIMOV SBUF, #39HJNB TI, $CLR TIMOV SBUF, #11HJNB TI, $CLR TIMOV SBUF, #3DHJNB TI, $CLR TIMOV SBUF, #0FEHJNB TI, $CLR TIPOP PSWPOP ACCRETXSF:PUSH ACCPUSH PSWMOV SBUF, #98HJNB TI, $CLR TIMOV SBUF, #38HJNB TI, $CLR TIMOV SBUF, #39HJNB TI, $CLR TIMOV SBUF, #39HJNB TI, $CLR TIMOV SBUF, #3DH ;UJNB TI, $CLR TIMOV SBUF, #98HJNB TI, $CLR TIPOP PSWPOP ACCRETKILLXS:PUSH ACCPUSH PSWMOV R7, #06HLOOP_XS:MOV SBUF, #0FFHJNB TI, $CLR TIDJNZ R7,LOOP_XSNOPPOP PSWPOP ACCRETTAB: DB 11H,0D7H,32H,92H,0D4H,98H,18H,0D1H,10H,90H ,0FFH;****************************************************************;******* 24C02读写程序 ×××××××;****************************************************************AT_RADE:PUSH PSWPUSH ACCMOV R0,#AT1 ;CPU首地址MOV R6,#06H ;8字节MOV R5,#08H ;8位MOV R7,#00H ;24C02首地址LCALL READ ;读数据NOPNOPPOP ACCPOP PSWRETAT_WR:PUSH PSWPUSH ACCMOV R0,#PS1 ;CPU RAM首地址MOV R6,#06H ;8字节MOV R5,#08H ;8 BITMOV R7,#00H ;24C02 RAM 首地址LCALL WRT ;先写进NOPNOPPOP ACCPOP PSWRET;---------------------;读串行器件 R0:RAM的起始地址,R5:位计数器,;R6:读的字节数,R7:读的起始地址READ: NOPNOPLCALL START0MOV A,#0A0HLCALL WRBLCALL ACKJB F0,RD_FAILMOV A,R7LCALL WRBLCALL CHKJB F0,RD_FAILLCALL START0MOV A,#0A1HLCALL WRBLCALL CHKJB F0,RD_FAILRD_N: NOPNOPLCALL RDBMOV @R0,ADJNZ R6,GO_ACKLCALL N_ACKRD_FAIL:NOPLCALL STOPMOV A,#0FFHRET;*************readGO_ACK: NOPNOPDEC R0LCALL ACKJMP RD_N;写串行器件 R0:RAM的起始地址,R5:位计数器,;R6:写的字节数(页),R7:写的起始地址WRT: NOPNOPLCALL START0MOV A,#0A0HLCALL WRBYTLCALL CHKJB F0,WR_FAILMOV A,R7LCALL WRBYTLCALL CHKJB F0,WR_FAILWR_N: NOPNOPMOV A,@R0LCALL WRBYTLCALL CHKJB F0,WR_FAILDEC R0DJNZ R6,WR_NWR_FAIL:NOPLCALL STOPMOV A,#0FFHRET;*********wrt;--------------------START0: NOPNOPSETB SDASETB SCLNOPNOPCLR SDANOPNOPCLR SCLNOPRET;-------------------STOP: NOPNOPCLR SDASETB SCLNOPNOPSETB SDANOPNOPCLR SCLNOPRET;--------------------ACK: NOPNOPCLR SDASETB SCLNOPNOPCLR SCLSETB SDANOPRET;--------------------N_ACK: NOPNOPSETB SDASETB SCLNOPNOPCLR SCLCLR SDANOPRET;--------------------CHK: NOPNOPSETB SDANOPNOPSETB SCLNOPNOPMOV C,SDAMOV F0,CCLR SCLNOPNOPRET;---------------------RDB: NOPNOPSETB SDAMOV R5,#8RD_B: NOPNOPCLR SCLNOPNOPSETB SCLNOPNOPMOV C,SDARLC ANOPNOPSETB SDACLR SCLDJNZ R5,RD_BNOPRET;一字节数据发送子程序WRBYT: MOV R5,#8WLP: RLC AJC WR1CLR SDASETB SCLNOPNOPCLR SCLDJNZ R5,WLPRETWR1: SETB SDASETB SCLNOPNOPCLR SCLCLR SDADJNZ R5,WLPRET;--------------------WRB: NOPNOPMOV R5,#8WR_B: NOPNOPSETB SDARLC AJC WR_1CLR SDANOPWR_1: SETB SCLNOPNOPCLR SCLNOPCLR SDANOPDJNZ R5,WR_BNOPRET;**************************************************************************;************* 毫秒延时程序 ***********************;**************************************************************************T10MSD:SETB RS0MOV R4, #12TM:MOV R3, #128TM6:DJNZ R3, TM6DJNZ R4, TMCLR RS0RETT100MSD:MOV R3, #200D11:MOV R4, #125D12:DJNZ R4, D12DJNZ R3, D11RETT500MSD:LCALL T100MSDLCALL T100MSDLCALL T100MSDLCALL T100MSDLCALL T100MSDNOPRETSEC:SETB RS1MOV R7, #0AHSEC_LP:LCALL T100MSDDJNZ R7,SEC_LPNOPCLR RS1RETEND
本网站试开通微、小企业商家广告业务;维修点推荐项目。收费实惠有效果!欢迎在QQ或邮箱联系!
试试再找找您想看的资料
资料搜索:
查看相关资料 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款
copyright & &广电电器(中国梧州) -all right reserved& 若您有什么意见或建议请mail: & &
地址: 电话:(86)774-2826670&如何输入一个3×4的整数矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。哪里错?_百度知道
如何输入一个3×4的整数矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。哪里错?
我会求已知的,但是不会输入,例如:输入:1,3,5,72,4,1,88,9,3,1输出:max=9,row=2,column=1int main(){
int i,j,row=0,colum=0,
int a[3][4]={0};
max=a[0][0];
for(i=0;i&=2;i++)
for(j=0;j&=3;j++)
{scanf(&%d&,&a[i][j]);}
for(i=0;i&=2;i++)
for(j=0;j&=3;j++)
if(a[i][j]&max)
{max=a[i][j];
printf(&max=%d,row=%d,colum=%d\n&,max,row,colum);
return 畅鸡扳课殖酒帮旬爆莫0;}
提问者采纳
我调试了,没问题,你是不没写#include&stdio.h&?或者你输入有问题,负责畅鸡扳课殖酒帮旬爆莫的说,这段代码完全能实现你说的功能
呜呜呜我交上去是错的,是不是因为他输入用逗号隔开我用的是空格?可是怎么用逗号隔开啊,我不会啊啊啊啊,呜呜呜救救我。。。快疯了。。。
你用循环输入数据必须输入一个按一下回车。难道你是要输入的样式必须和你上面写的3*4矩阵一模一样吗?写程序没必要这样吧
提问者评价
我也觉得老师标准有问题~,我也觉得我是对的~谢谢
其他类似问题
为您推荐:
其他1条回答
十三行:row=i+1十四行:colum=j+1
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁电子密码锁的设计_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
电子密码锁的设计
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩27页未读,继续阅读
你可能喜欢关键词: AT89S51;AT24C02;电子密码锁;矩阵键盘
&&&&&&& ;********************************************&&&&&&& ;*********&&&&&&& 电子密码锁&&&&&&& *********&&&&&&& ;********************************************&&&&&&& ;*********&&&&&&& &&&&&&& *********&&&&&&& ;********************************************&&&&&&& ;显示缓冲区&&&&&&& ;LED1&&& EQU&&& 6FH&&&&&&& BUFF&&& EQU&&& 6EH&&&&&&& TIMERS1 EQU&&& 6DH&&&& ;输入回车的次数&&&&&&& TIMERS2 EQU&&& 6CH&&&& ;报警的次数&&&&&&& TIMERS& EQU&&& 6BH&&&& ;输入数字的位数&&&&&&& ;LED6& EQU&&& 6AH&&&&&&& ;密码缓冲区&&&&&&& PS1&& EQU&&& 69H&&&&&&& PS2&& EQU&&& 68H&&&&&&& PS3&& EQU&&& 67H&&&&&&& PS4&& EQU&&& 66H&&&&&&& PS5&& EQU&&& 65H&&&&&&& PS6&& EQU&&& 64H&&&&&&& ;AT24C02读取缓冲区&&&&&&& AT1&& EQU&&& 63H&&&&&&& AT2&& EQU&&& 62H&&&&&&& AT3&& EQU&&& 61H&&&&&&& AT4&& EQU&&& 60H&&&&&&& AT5&& EQU&&& 5FH&&&&&&& AT6&& EQU&&& 5EH&&&&&&& ;按键标志位&&&&&&& F_1&& BIT&& 20H&&&&&&& F_2&& BIT&& 21H&&&&&&& F_3&& BIT&& 22H&&&&&&& F_4&& BIT&& 23H&&&&&&& BUF_FULL BIT 24H&&& ;密码已经够六位的标志位,为1表示满&&&&&&& CH_STATE BIT 25H&&& ;系统更改的状态标志位,为1表示busy&&&&&&& FLAG1 BIT&&& 26H&&& ;功能键标志位,为1表示功能按键。&&&&&&& F_F1& BIT&&& 27H&&&&&&& F_F2& BIT&&& 28H&&&&&&& PSW_F BIT&&& 29H&&& ;密码是否正确的标志位&&&&&&& ;口资源定义&&&&&&& SPK&& BIT&&& P2.1&&&&&&& JDQ&& BIT&&& P2.3&&&&&&& SDA&& BIT&&& P2.4&& ;定义串口数据端&&&&&&& SCL&& BIT&&& P2.5&&&&&&& ;灯&&&&&&& L1&&& BIT&&& P1.0&&&&&&& L2&&& BIT&&& P1.1&&&&&&& L3&&& BIT&&& P1.2&&&&&&& ;&&&&&&& ORG&& 0000H&&&&&&& AJMP& MAIN&&&&&&& ORG&& 000BH&&&&&&& ;AJMP& TIMER0&&&&&&& ORG&& 001BH&&&&&&& ;AJMP& TIMER1&&&&&&& ORG&& 0030H&& MAIN:MOV&& SP,&&& #70H&&&&&&& MOV&& TMOD,& #11H&&&&&&& MOV&& TH0,&& #3CH&&&&&&& MOV&& TL0,&& #0B0H&&&&&&& MOV&& TH1,&& #3CH&&&&&&& MOV&& TL1,&& #0B0H&&&&&&& CLR&& F_1&&&&&&&&&&&& ;清除标志位&&&&&&& CLR&& F_2&&&&&&& CLR&& F_3&&&&&&& CLR&& F_4&&&&&&& CLR&& BUF_FULL&&&&&&& CLR&& CH_STATE&&&&&&& CLR&& FLAG1&&&&&&& CLR&& F_F1&&&&&&& CLR&& F_F2&&&&&&& CLR&& PSW_F&&&&&&& MOV&& BUFF,#00H&&&&&&& ;调用&&&&&&& LCALL INITPS&&&&&&&&&& ;初始化环境&&&&&&& LCALL INITAT&&&&&&& LCALL& XSA&&&&&&&&&&& ;调用默认显示&&&&&&& MOV&&& TIMERS1,#00H&&&&&&& NOP&&&&&&& MOV&& PS1,& #11H&&&& ;初始化密码830620&&&&&&& MOV&& PS2,& #0AH&&&&&&& MOV&& PS3,& #02H&&&&&&& MOV&& PS4,& #13H&&&&&&& MOV&& PS5,& #0BH&&&&&&& MOV&& PS6,& #02H& START:NOP&&&&&&&&&&&&&&&&& ;程序开始&&&&&&& LCALL CH_KEY&&&&&&&& ;检查键盘&&&&&&& AJMP& START&&&&&&&&& ;返回
&CH_KEY:LCALL KS&&&&&&&&&&&& ;检查有没有按键按下&&&&&&& JNZ&& LK1&&&&&&& AJMP& CH_KEY&&& LK1:&&&&&&& LCALL T12MS&&&&&&& ACALL KS&&&&&&& JNZ&& LK2&&&&&&& RET
&&& LK2:&&&&&&& NOP&&&&&&& LCALL SBIE&&&&&&&&&&& ;按键识别子程序&&&&&&& MOV&& BUFF,& A&&&&&&& ;送缓冲区以识别是数字键还是功能键?&&&&&&& LCALL CH_KF&&&&&&&&&& ;判断按键功能。&&&&&&& JB&&& FLAG1& ,KEY_FUN ;标志为1,则为功能键;***********数字按键输入并且存放到缓冲区内等待比较***********KEY_DIG:NOP&&&&&&&&&&&&&&&&&& ;设一标志,辨别输入是否满&&&&&&& ;SETB& TR0&&&&&&& INC&& TIMERS&&&&&&&&& ;输入数字的位数&&&&&&& MOV&& A,&&& TIMERS&&&&&&& CLR&& C&&&&&&& SUBB& A,&&& #01H&&&&&&& JNZ&& PS_2&&&&&&& MOV&& PS1,& BUFF&&&&&&&& ;依照顺序存放密码&&&&&&& AJMP& NEXT&& PS_2:MOV&& A,&& TIMERS&&&&&&& SUBB& A,&&& #02H&&&&&&& CLR&& C&&&&&&& JNZ&& PS_3&&&&&&& MOV&& PS2,&& BUFF&&&&&&& AJMP& NEXT&& PS_3:MOV&& A,&& TIMERS&&&&&&& CLR&& C&&&&&&& SUBB& A,&&& #03H&&&&&&& JNZ&& PS_4&&&&&&& MOV&& PS3,&& BUFF&&&&&&& AJMP& NEXT&& PS_4:MOV&& A,&&& TIMERS&&&&&&& CLR&& C&&&&&&& SUBB& A,&&& #04&&&&&&& JNZ&& PS_5&&&&&&& MOV&& PS4,& BUFF&&&&&&& AJMP& NEXT&& PS_5:MOV&& A,&&& TIMERS&&&&&&& CLR&& C&&&&&&& SUBB& A,&&& #05&&&&&&& JNZ&& PS_6&&&&&&& MOV&& PS5,& BUFF&&&&&&& AJMP& NEXT&& PS_6:MOV&& A,&&& TIMERS&&&&&&& CLR&& C&&&&&&& SUBB& A,&&& #06H&&&&&&& JNZ&& CH_KEY&&&&&&& MOV&& PS6,& BUFF&& NEXT:LCALL XSC&&&&&&& MOV&& R7,&& TIMERS&&& ;比较输入的次数。&&&&&&& CJNE& R7,&& #06H& ,FULL&& FULL:JC&&& NEXT9&&&&&&& SETB& BUF_FULL&&&&&&& MOV&& TIMERS,#06H&&&&&&& CLR&& L3&&&&&&& NOP&&&&&&& CLR&& P2.1&&&&&&& LCALL T100MSD&&&&&&& SETB& P2.1&&&&&&& NOP&&&&&&& AJMP& CH_KEY& NEXT9:CLR&& P2.1&&&&&&&&&&& ;密码输入一位,鸣叫一声。&&&&&&& CLR&& L3&&&&&&& LCALL T100MSD&&&&&&&& ;延时100ms&&&&&&& SETB& L3&&&&&&& SETB& P2.1&&&&&&& AJMP& CH_KEY;*****************功能按键比较并且跳转*************KEY_FUN:&&&&&&& CLR&& FLAG1&&&&&&& CLR&& C&&&&&&& MOV&& A,&& BUFF&&&&&&& SUBB& A,&& #03H&&&& ;按键CL跳转&&&&&&& JNZ&& EN_C&&&&&&& AJMP& CL&& EN_C:CLR&& C&&&&&&& MOV&& A,&& BUFF&&&& ;按键EN跳转&&&&&&& SUBB& A,&& #00H&&&&&&& JNZ&& F1_C&&&&&&& AJMP& EN&& F1_C:CLR&& C&&&&&&& MOV&& A,&& BUFF&&&&&&& SUBB& A,&& #1BH&&&&&&& JNZ&& F2_C&&&&&&& AJMP& FU1&& F2_C:CLR&& C&&&&&&& MOV&& A,&& BUFF&&&&&&& SUBB& A,&& #1AH&&&&&&& JNZ&& F3_C&&&&&&& AJMP& FU2&& F3_C:CLR&& C&&&&&&& MOV&& A,&& BUFF&&&&&&& SUBB& A,&& #19H&&&&&&& JNZ&& F4_C&&&&&&& AJMP& FU3&& F4_C:CLR&& C&&&&&&& MOV&& A,&& BUFF&&&&&&& SUBB& A,&& #18H&&&&&&& JZ&&& FU4& EXIT8:NOP&&&&&&& LJMP& CH_KEY;***************开门子程序 ********************************&&&& CL:NOP&&&&&&& SETB& L3&&&&&&& MOV&& BUFF, #00H&&&&&&&&&&&& ;消密码缓冲&&&&&&& MOV&& TIMERS,#00H&&&&&&& LCALL INITPS&&&&&&&&&&&&& ;消除AT缓冲,加调电存储后一定要加上&&&&&&& LCALL XSC&&&&&&& LCALL BP&&&&&&& LCALL BP&&&&&&& LCALL T100MSD&&&&&&& LCALL BP&&&&&&& CLR&& FLAG1&&&&&&& AJMP& CH_KEY
&&& FU4:NOP&&&&&&& LCALL BP&&&&&&& LCALL T100MSD&&&&&&& LCALL BP&&&&&&& LCALL T100MSD&&&&&&& LCALL BP&&&&&&& LCALL T100MSD&&&&&&& LCALL BP&&&&&&& LCALL T100MSD&&&&&&& LCALL BP&&&&&&& CLR&& FLAG1&&&&&&& AJMP& CH_KEY
&&& FU3:NOP&&&&&&& LCALL BP&&&&&&& LCALL T100MSD&&&&&&& LCALL BP&&&&&&& LCALL KILLXS ;关闭显示&&&&&&& CLR&& FLAG1&&&&&&& AJMP& CH_KEY
&&& FU1:NOP&&&&&&& LCALL XSC&&&&&&& JB&&& F_F1,&& NEXT_F1&&&&&&& CLR&& L1&&&&&&& LCALL BP&&&&&&& SETB& F_F1&&&&&&& AJMP& CH_KEYNEXT_F1:SETB& L1&&&&&&& LCALL BP&&&&&&& CLR&& F_F1&&&&&&& ;LCALL CH_STATE&&&&&&&&&&& ;查看现在的状态以防误按&&&&&&& ;SETB& TR1&&&&&&&&&&&&&&& ;报警限制暂时不开&&&&&&& ;INC&& F_F1&&&&&&& CLR&&& FLAG1&&&&&&& AJMP& CH_KEY
&&& FU2:NOP&&&&&&& JB&&& F_F2,&& NEXT_F2&&&&&&& CLR&& L2&&&&&&& LCALL BP&&&&&&& SETB& F_F2&&&&&&& AJMP& CH_KEYNEXT_F2:SETB& L2&&&&&&& LCALL BP&&&&&&& CLR&& F_F2&&&&&&& CLR&& FLAG1&&&&&&& AJMP& CH_KEY;***************按键的功能描述*************************&&&& EN:NOP&&&&&&& JB&&& BUF_FULL,&& GOON&&&&&&& AJMP& EXIT&& GOON:CLR&& BUF_FULL&&&&&&& JB&&& F_F2, AT_WRON&&&&&&&&&&&& ;F2按键标志,若为1,则调用修改密码子程序。&&&&&&& LCALL AT_RADE&&&&&&& LCALL C_PSW&&&&&&&&&&&&&&&&& ;比较密码子程序&&&&&&& JB&&& PSW_F,OPEN&&&&&&&&&&&& ;密码比较正确,则调用开锁子程序&&&&&&& LCALL XSD&&&&&&& INC&& TIMERS2&&&&&&& MOV&& R7,TIMERS2&&&&&&&&&&& ;密码错误,调入输入密码输入次数,准备锁定键盘&&&&&&& CJNE& R7,#03H,D0&&&& D0:JC&&& NEXT1&&&&&&&&&&&&&&&& ;错误次数小3次&&&&&&& LCALL XSE&&&&&&&&&&&&&& ;锁定5分钟&&&&&&& LCALL WARN2S&&&&&&& LCALL K_1M& NEXT1:LCALL WARN2S&&&&&&&&&&& ;报警2分钟&&&&&&& LCALL XSA&& EXIT:LCALL INITPS&&&&&&& MOV&& BUFF,&& #00H&&&&&&& CLR&& FLAG1&&&&&&& MOV&& TIMERS, #00H&&&&&&& AJMP& CH_KEY&&&&&&&&&&&&&&&& ;跳出&&&&&&& AT_WRON:LCALL AT_WR&&&&&&& LCALL XSF&&&&&&& LCALL BP&&&&&&& LCALL T100MSD&&&&&&& LCALL BP&&&&&&& LCALL T500MSD&&&&&&& LCALL KILLXS&&&&&&& LCALL T500MSD&&&&&&& LCALL XSF&&&&&&& LCALL T500MSD&&&&&&& LCALL KILLXS&&&&&&& LCALL T500MSD&&&&&&& LCALL XSF&&&&&&& LCALL T500MSD&&&&&&& NOP&&&&&&& NOP&&&&&&& LCALL XSA&&&&&&& AJMP& EXIT
&&&& OPEN:MOV& A,&&&& TIMERS1&&&&&&&& CJNE A,&&&& #09H,CLT1&&& CLT1:JC&& GOON1&&&&&&&& MOV& TIMERS1,#00H&& GOON1:INC& TIMERS1&&&&&&&&&&&&&&& ;输入回车的次数&&&&&&&& MOV& TIMERS2,#00H&&&&&&&& SETB& L3&&&&&&&& CLR&& PSW_F&&&&&&&& LCALL XSB&&&&&&&& CLR& JDQ&&&&&&&&&&&& ;开门&&&&&&&& LCALL BP&&&&&&&& LCALL BP&&&&&&&& LCALL BP&&&&&&&& LCALL BP&&&&&&&& LCALL SEC&&&&&&&& LCALL SEC&&&&&&&& LCALL SEC&&&&&&&& LCALL SEC&&&&&&&& LCALL SEC&&&&&&&& LCALL SEC&&&&&&&& LCALL SEC&&&&&&&& LCALL SEC&&&&&&&& SETB& JDQ&&&&&&&& LCALL XSA&&&&&&&& NOP&&&&&&&& AJMP& EXIT
;**************各类子程序********************************;****& 注意清楚缓冲区时AT1...AT6不应在初始化中执行,以 ***;****& 防两缓冲区都为0,相同开锁&&&&&&&&&&&&&&&&&&&&&& ***;********************************************************
CLR_BUF:MOV&& R7,&& #06H&&&&&&& MOV&& R0,& #6FH& LOOP1:MOV&& A,&& #00H&&&&&&& MOV&& @R0, A&&&&&&& DEC&& R0&&&&&&& DJNZ& R7,LOOP1&&&&&&& RET;*************初始化显示缓冲区以及其他缓冲区**************&INITPS:PUSH& A&&&&&&& PUSH& PSW&&&&&&& MOV&& R7,& #06H&&&&&&& MOV&& R1,& #PS1&&&&&&& MOV&& A,&& #00HINIT_PS:MOV&& @R1, A&&&&&&& DEC&& R1&&&&&&& DJNZ& R7,& INIT_PS&&&&&&& POP&& PSW&&&&&&& POP&& ACC&&&&&&& NOP&&&&&&& RET
&INITAT:PUSH& ACC&&&&&&& PUSH& PSW&&&&&&& MOV&& R7,#06H&&&&&&& MOV&& R1,#AT1&&&&&&& MOV&& A, #00HINIT_AT:MOV&& @R1, A&&&&&&& DEC&& R1&&&&&&& DJNZ& R7,& INIT_AT&&&&&&& MOV&& TIMERS,#00H&&&& ;密码输入的次数清零。&&&&&&& POP&& PSW&&&&&&& POP&& ACC&&&&&&& RET
;*************& 按键识别子程序& ***************************&& SBIE:MOV&& R2,&& #0EFH&&&&& ;识别按键子程序,数据送A保存,课本P146页。&&&&&&& MOV&& R4,&& #00H&&& LK4:MOV&& A,&&& R2&&&&&&& MOV&& P0,&& A&&&&&&& NOP&&&&&&& MOV&& A,&&& P0&&&&&&& JB&&& ACC.0,LONE&&&&&&& MOV&& A,&&& #00H&&&&&&& AJMP& LKP&& LONE:JB&&& ACC.1,LTWO&&&&&&& MOV&& A,&&& #08H&&&&&&& AJMP& LKP&& LTWO:JB&&& ACC.2,LTHR&&&&&&& MOV&& A,&& #10H&&&&&&& AJMP& LKP&& LTHR:JB&&& ACC.3,NEXTT&&&& ;判断下一列&&&&&&& MOV&& A,&& #18H&&& LKP:ADD&& A,&& R4&&&&&&& PUSH& ACC&&& LK3:ACALL KS&&&&&&& JNZ&& LK3&&&&&&& POP&& ACC&&&&&&& RET& NEXTT:INC&& R4&&&&&&& MOV&& A,&& R2&&&&&&& JNB&& ACC.7,KND&&&&&&& RL&&& A&&&&&&& MOV&& R2,& A&&&&&&& AJMP& LK4&&& KND:AJMP& CH_KEY
&&&& KS:MOV&& P0,&&& #0FH&&&&&&& NOP&&&&&&& MOV&& A,&&&& P0&&&&&&& CPL&& A&&&&&&& ANL&& A,&&&& #0FH&&&&&&& NOP&&&&&&& RET
& CH_KF:CLR&& C&&&&&&& MOV&& A,&& BUFF&&&&&& ;判断是数字按键还是功能按键,为1表示功能键&&&&&&& CJNE& A,&& #17H,& KY&&&& KY:JC&&& SET_CH&&&&&&&& ;假若是数字按键则标志置为0&&&&&&& SETB& FLAG1&&&&&&&&& ;假若是功能按键则标志置为1&&&&&&& AJMP& CHKE_END&SET_CH:CLR&& C&&&&&&& MOV&& A,&& BUFF&&&&&&& SUBB& A,&& #00H&&&&&&& JNZ&& EN_CH&&&&&&& SETB& FLAG1&&&&&&& AJMP& CH_END& EN_CH:MOV&& A,&& BUFF&&&&&&& SUBB& A,&& #03H&&&&&&& JNZ&& DIG&&&&&&& SETB& FLAG1&&&&&&& AJMP& CH_END&&& DIG:CLR&& FLAG1&CH_END:NOPCHKE_END:RET
&& T12MS:MOV&&&& R7,&& #18H&&&& TM1:MOV&&&& R6,&& #0FFH&&& TM66:DJNZ&&& R6,&& TM66&&&&&&&& DJNZ&&& R7,&& TM1&&&&&&&& RET
;****************检验密码正误******************************&& C_PSW:PUSH& PSW&&&&&&&& PUSH& ACC&&&&&&&& MOV& R2,#06H&&&&&&&& MOV& R0,#PS1&&&&&&&& MOV& R1,#AT1&&&& C_P:CLR& C&&&&&&&& MOV& A,@R0&&&&&&&& SUBB A,@R1&&&&&&&& JNZ& RETURN&&&&&&&& DEC& R0&&&&&&&& DEC& R1&&&&&&&& DJNZ R2,C_P&&&&&&&& NOP&&&&&&&& SETB PSW_F&&&&&&&& AJMP EXIT7& RETURN:CLR& PSW_F&& EXIT7:NOP&&&&&&&& POP& ACC&&&&&&&& POP& PSW&&&&&&&& RET;×××××××××××××××××锁定,鸣笛子程序××××××××××××&LOCK_1M:MOV& R4,#3CH&&&&&&&&&&&&&&&&&& ;锁定1分钟&M1_LOOP:LCALL SEC&&&&&&&& DJNZ& R4,M1_LOOP&&&&&&&& NOP&&&&&&&& RET
&&& WARN2S:PUSH& PSW&&&&&&&&& PUSH& ACC&&&&&&&&& MOV&& R5, #14H&&&&& ;调用20次BP,报警2s&&&& WARN:LCALL BP&&&&&&&&& DJNZ& R5,WARN&&&&&&&&& NOP&&&&&&&&& POP&& ACC&&&&&&&&& POP&& PSW&&&&&&&&& NOP&&&&&&&&& RET&&&&& BP:CLR&& SPK&&&&&&&&&&& ;鸣笛子程序&&&&&&&& LCALL T100MSD&&&&&&&& SETB& SPK&&&&&&&& NOP&&&&&&&& RET
本网站试开通微、小企业商家广告业务;维修点推荐项目。收费实惠有效果!欢迎在QQ或邮箱联系!
试试再找找您想看的资料
资料搜索:
查看相关资料 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款
copyright & &广电电器(中国梧州) -all right reserved& 若您有什么意见或建议请mail: & &
地址: 电话:(86)774-2826670&

我要回帖

更多关于 单片机电子密码锁程序 的文章

 

随机推荐