ORG 0000HAJMP PLAYORG 001BHAJMP JONGPLAY: MOV P1, #0FFH: 程序初始化MOV P2, #00HMOV 70H, #00HMOV 71H, #00HMOV 72H, #00HMOV 73H, #00HMOV 74H, #00HMOV 75H, #00HMOV 76H, #00HMOV 77H, #00HMOV R1, #00HMOV R2, #00HMOV TMOD, #50HMOV TL1, #0FFHMOV TH1, #0FFHSETB TR1SETB ET1SETB EA;////////////////////////////////////////////////////////////////////////MAIN: MOV SP, #80H; ACALL S0; 调用运行子程序ACALL S1; 调用停止子程序ACALL S2; 调用个位数按键子程序ACALL S3; 调用十位数按键子程序ACALL S4; 调用百位数按键子程序ACALL S5; 调用千位数按键子程序ACALL ESJJ;调用显示延时子程序AJMP MAIN; 返回主程序;////////////////////////////////////////////////////////////////////////S0: JB P1.0, S01; 运行按键子程序SETB P2.0;如果按键1.0为0,则置位2.0S01: RET;///////////////////////////////////////////////////////////////////////S1: JB P1.1, S11;停止按键子程序CLR P2.0;如果按键1.1为0,则置位2.0S11: RET;//////////////////////////////////////////////////////////////////////S2: JB P1.2, S23;个位数按键子程序MOV A, 60H;CJNE A, #09H, S21;个位数是否小于9,小于加1MOV 60H, #00H;大于清0AJMP S210;S21: INC 60H;S210: JB P1.6, S211;判断此数为长度数还是数量数MOV 70H, 60H;数量数送到70H单元AJMP S22;S211: MOV 74H, 60H;ACALL K11;长度数送到74H单元S22: ACALL DL调用按键延时子程序S23: RET;/////////////////////////////////////////////////////////////////////S3: JB P1.3, S33;十位按键子程序MOV A, 61H;CJNE A, #09H, S31;MOV 61H, #00H;AJMP S310;S31: INC 61H;S310: JB P1.6, S311;MOV 71H, 61H;AJMP S32;S311: MOV 75H, 61H;ACALL K11;S32: ACALL DLS33: RET;////////////////////////////////////////////////////////////////////S4: JB P1.4, S43;百位按键子程序MOV A, 62H;CJNE A, #09H, S41;MOV 62H, #00H;AJMP S410;S41: INC 62H;S410: JB P1.6, S411;MOV 72H, 62H;AJMP S42;S411: MOV 76H, 62H;ACALL K11;S42: ACALL DL;S43: RET;////////////////////////////////////////////////////////////////////S5: JB P1.5, S53;千位按键子程序MOV A, 63H;CJNE A, #09H, S51;MOV 63H, #00H;AJMP S510;S51: INC 63H;S510: JB P1.6, S511;MOV 73H, 63H;AJMP S52;S511: MOV 77H, 63H;ACALL K11;S52: ACALL DL;S53: RET;////////////////////////////////////////////////////////////////////长度数BCD转二进制码子程序;转换数为77H(千位)76H(百位)75H(十位)74H(个位);结果存于67H(H)66H(L)K11: MOV A, #38H;千位数转MOV B, 77H;MUL ABMOV 67H, B;MOV 66H, A;MOV A, #03H;MOV B, 77H;MUL ABADD A, 67H;MOV 67H, A;;------------------------------MOV A, #64H;百位数转MOV B, 76H;MUL ABADD A, 66HMOV 66H, A;MOV A, B;MOV B, 77H;ADDC A, 67H;MOV 67H, A;;------------------------------MOV A, #0AH;十位数转MOV B, 75H;MUL ABADD A, 66H;MOV 66H, A;MOV A, B;ADDC A, 67H;MOV 67H, A;;------------------------------MOV A, 74H;个位数转ADD A, 66H;MOV 66H, A;MOV A, #00H;ADDC A, 67H;MOV 67H, A;RET;////////////////////////////////////////////////////////////////////////////////////////////;中断子程序JONG: CLR P2.0;启动剪线开关ACALL DL;ACALL DL;SETB P2.1;;--------------------MOV A, #0FFH;长度数送到计数子程序CLR C;SUBB A, 66H;MOV TL1, A;MOV A, #0FFH;SUBB A, 67H;MOV TH1, A;;--------------------ACALL DL;延时ACALL DL;ACALL DL;ACALL DL;CLR P2.1;关闭剪线开关ACALL DL;ACALL BCD0;数量减一子程序RETI;;////////////////////////////////////////////////////////////////////////////////////////////;数量数减一子程序;被减数为73H(千位)72H(百位)71H(十位)70H(个位)BCD0: MOV A, 70H;JZ BCD1;DEC 70H;AJMP BCD5;;-------------------------------BCD1: MOV A, 71H;JZ BCD2;DEC 71H;MOV 70H, #09H;AJMP BCD5;;-------------------------------BCD2: MOV A, 72H;JZ BCD3;DEC 72H;MOV 71H, #09H;MOV 70H, #09H;AJMP BCD5;;-------------------------------BCD3: MOV A, 73H;JZ BCD4;DEC 73H;MOV 72H, #09H;MOV 71H, #09H;MOV 70H, #09H;AJMP BCD5;;-------------------------------BCD4: CLR P2.0AJMP BCDQ;;-------------------------------BCD5: SETB P2.0BCDQ: RET;////////////////////////////////////////////////////////////////////////////////////////////DL: MOV 68H, #20;按键延时子程序DL1: ACALL ESJJ;DEC 68H;MOV A, 68H;CJNE A, #00H, DL1;RET;////////////////////////////////////////////////////////////////////////////////////////////ESJJ: JB P1.6, ESJJ1;显示子程序MOV 60H, 70H;MOV 61H, 71H;MOV 62H, 72H;MOV 63H, 73H;AJMP ESJJ2ESJJ1: MOV 60H, 74H;MOV 61H, 75H;MOV 62H, 76H;MOV 63H, 77H;ESJJ2: MOV A, 60H;ADD A, #30H;MOVC A, @A+PC;CLR P2.3MOV P0, A;SETB P2.6;ACALL DDY;MOV A, 61H;ADD A, #23HMOVC A, @A+PC;CLR P2.6;MOV P0, A;SETB P2.5;ACALL DDY;MOV A, 62H;ADD A, #16H;MOVC A, @A+PC;CLR P2.5;MOV P0, A;SETB P2.4;ACALL DDY;MOV A, 63H;ADD A, #09H;MOVC A, @A+PC;CLR P2.4;MOV P0, A;SETB P2.3;ACALL DDY;RETBS: DB 01H;DB 0E7H;DB 0C8H;DB 0C2H;DB 0A6H;DB 92H;DB 90H;DB 87H;DB 80H;DB 82H;DDY: MOV R1, #20DDY1: MOV R2, #80DDY2: DJNZ R2, DDY2;DJNZ R1, DDY1;RETEND
导读:目前正在解读《AT89C51制作的自动计数剪线系》的相关信息,《AT89C51制作的自动计数剪线系》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《AT89C51制作的自动计数剪线系》的详细说明。
简介:本文和大家分享一个程序,希望对感兴趣的朋友有所帮助。
提醒:《AT89C51制作的自动计数剪线系》最后刷新时间 2024-03-14 01:00:01,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《AT89C51制作的自动计数剪线系》该内容的真实性请自行鉴别。