(精品论文)简易电动车_程序_第1页
(精品论文)简易电动车_程序_第2页
(精品论文)简易电动车_程序_第3页
(精品论文)简易电动车_程序_第4页
(精品论文)简易电动车_程序_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

附:程序清单;PCON EQU 87H;*LCM103 LCM101 TEST *;MCS-51:89C2051,89C51,89C52;fo=2.45MHz;/CS=P1.4 /WR=P1.3 DATA=P1.2 *;RAM 20H:COMMAND CODE *;RAM 21H: LCD ADDR*;RAM 25H: LCD DATA* ORG 0000H AJMP MAIN ORG 000BH AJMP wto ORG 0013H AJMP PINT1 ORG 0030HMAIN: ;ACALL STOP CLR P3.0 MOV P2,#0F0H acall ql acall start ;ACALLDELAY;ACALL LLL ;ACALL RDNBYT ;MOV 31H,41H ;MOV 32H,42H ;MOV 33H,43H ;MOV 2FH,#08H ;ACALL WRNBYT ;ACALL DELAY1 ;ACALL STARTmain2: MOV SP,#5FH MOV TMOD,#52H MOV TL0,#06H MOV TH0,#06H MOV IE,#82H SETB IT1MAIN3: ACALL KEY1 ;按键控制,前进,清零,翻页 ;= CLR P2.0 SETB P2.1 ACALL CHUAN1ZHI: MOV A,TL1 ;直道行驶 CLR C SUBB A,#30 ;230=S=(TH1,TL1)*14/6 JNC WAN ACALL KUAI AJMP ZHI;=;弯道行驶;=WAN: SETB 20H.2 ;弯道标志位 ;CLR P2.3 ;SETB P2.2 CLR P2.1 SETB P2.0 MOV 5DH,#02H DJNZ 5DH,$ CLR P2.0 SETB P2.1 ACALL MAN ;到达弯道 JB 20H.3,ZHANG ajmp wan;=;障碍物行驶;=ZHANG: mov 20h,#00h clr p2.3 setb p2.2 CLR P2.1 SETB P2.0 MOV 5EH,#50S50: MOV 5DH,#0FFH DJNZ 5DH,$ DJNZ 5EH,S50 CLR P2.0 SETB P3.0 mov 3fh,#05 ;定时器5秒程序ffdd: jnb 20h.0, $ clr 20h.0 CPL P3.0 djnz 3fh,FFDD clr p2.3 SETB p2.2 clr p2.0 setb p2.1 setb EX1 ;启用/INT1 MOV 5BH,#0FFHDTDT: MOV 5AH,#0FFH DJNZ 5AH,$ DJNZ 5BH,DTDTOK: mOV A,P0 ANL A,#7FH cjne a,#7FH,K2LZG AJMP STOP2k2lzg: JB P2.6,KKLZG ACALL LZHUAN AJMP OKKKLZG: ACALL RZHUAN AJMP OKSTOP2: MOV P2,#00H MOV IE,#00H setb p3.0 clr tr0 CLR P2.1 setb p2.0 ACALL DELAY1 ACALL DELAY1 ACALL DELAY1 nop CLR P2.0 CLR P3.0LKLK: ACALL AAA ACALL KEY1 ACALL AAA AJMP LKLK SJMP $;=;外部中断1;=PINT1: CLR EX1 PUSH ACC PUSH PSWQQ: CLR P2.0 ;前 CPL P2.1 CLR P2.3 SETB P2.2 SETB P2.1 NOP NOP JNB P3.3, QQ SETB P2.1 SETB EX1 POP PSW POP ACC RETI;=;慢速前进;=MAN: CLR P2.0 ;前进 SETB P2.1 MOV 5AH,#01HCHU11: JB 20H.3,OUTI2 ACALL CHUAN2 CLR P2.1 ;SETB P2.0 ACALL CHUAN2 CLR P2.0 SETB P2.1 ACALL CHUAN2 DJNZ 5AH,CHU11 CLR P2.1 ;停 MOV 5BH,#9FHCHU12: JB 20H.3,OUTI CPL P2.1 ACALL CHUAN2 DJNZ 5BH,CHU12 CLR P2.0 SETB P2.1 NOP NOP NOP NOPouti2: RET;=;快速前进;=KUAI: CLR P2.0 ;前进 SETB P2.1 MOV 5AH,#01HCHU1: JB 20H.3,OUTI ACALL CHUAN2 DJNZ 5AH,CHU1 CLR P2.1 ;停 MOV 5BH,#0FFHCHU2: JB 20H.3,OUTI CLR P2.1 ACALL CHUAN2 DJNZ 5BH,CHU2 NOPouti: RET;=;光电传感器检测子程序;=CHUAN1: MOV A,P0 ANL A,#7FH CJNE A,#00H,GGH AJMP CHUAN1GGH: SETB TR1 ;启动计数器 AJMP CHUAN2OUTOUT2:AJMP OUTOUT;=CHUAN2: JB 20H.3,OUTOUT2 JB P0.7,GGGOOO JB 20H.1,GGGO3 JB 20H.2,OUTOUT2 INC 35H MOV A,35H CJNE A,#01,QQ23 MOV 51H,TH1 MOV 50H,TL1 QQ23: MOV A,35H CJNE A,#02,QQ3 MOV 53H,TH1 MOV 52H,TL1QQ3: MOV A,35H CJNE A,#03,QQQQQ MOV 55H,TH1 MOV 54H,TL1QQQQQ: SETB 20H.1 ;ACALL AJMP CHUAN2 RETGGGOOO: CLR 20H.1GGGO3: MOV A,P0 ANL A,#03H CJNE A,#03H,GGGOO1 AJMP LZHUANGGGOO1: MOV A,P0 ANL A,#60H CJNE A,#60H,GGGOO2 AJMP RZHUANGGGOO2: MOV A,P0 ANL A,#07H CJNE A,#00H,RZHUAN MOV A,P0 ANL A,#78H CJNE A,#00H,LZHUANGOOUT: CLR P2.2 CLR P2.3 RETLZHUAN: CLR P2.3 ;左转 NOP SETB P2.2 MOV 5AH,#30H DJNZ 5AH,$ CLR P2.1 NOP NOP NOP NOP SETB P2.1 CLR P2.2 RETRZHUAN: CLR P2.2 ;右转 SETB P2.3 SETB P2.1 MOV 5AH,#30H DJNZ 5AH,$ CLR P2.1 NOP NOP NOP NOP NOP NOP SETB P2.1 CLR P2.3 RETQIAN: CLR P2.0 ;前进 SETB P2.1 RET NOP NOP NOP NOP NOP CLR P2.1 RETHOU: CLR P2.1 ;后退 SETB P2.0 RETOUTOUT: SETB 20H.3 CLR P2.1 SETB P2.0 NOP NOP NOP NOP CLR P2.0 RET;=;按键按制子程序;=KEY1: JB P1.5,KEY2 ;清零键 JNB P1.5,$ MOV 35H,#00 ACALL AAA AJMP KEY2KEY2: JB P1.6,KEY3 ;翻页键 JNB P1.6,$ MOV A,35H CJNE A,#03H,RRR21 MOV R2,55H MOV R3,54H MOV 35H,#03 ACALL AAA ACALL DELAY ACALL DELAY MOV 35H,#03 AJMP JHG RRR21: MOV A,35H CJNE A,#02,RRR1 JHG: MOV R2,53H MOV R3,52H MOV 35H,#02 ACALL AAA ACALL DELAY ACALL DELAY MOV 35H,#02 AJMP JHG2 RRR1: MOV A,35H CJNE A,#01,RRR0JHG2: MOV R2,51H MOV R3,50H MOV 35H,#01 ACALL AAA ACALL DELAY ACALL DELAY RRR0: AJMP KEY3KEY3: JB P1.7,KEY1 ;启动 JNB P1.7,$ ACALL DELAY setb tr0 ;开定时器0 ;setb tr1 MOV TL1,#01H CLR P2.0 ;前进 SETB P2.1 CLR P2.2 CLR P2.3 RET;=;定时器中断子程序;=WTO: PUSH ACC MOV R0,#30H INC R0 MOV A,#200 XRL A,R0 JNZ OUT MOV R0,A;=ACALL LUCHENG;= MOV R0,#31H INC R0 MOV A,#10 XRL A,R0 JNZ OUT MOV R0,A SETB 20H.0 MOV R2,01LFT: INC R0 INC R0 MOV A,#10; XRL A,R0 JNZ OUT MOV R0,A DJNZ R2,LFT INC R0 INC R0 MOV A,#9; XRL A,R0 JNZ OUT MOV R0,A MOV 33H,#09 MOV IE,#00H MOV P2,#00H CLR TR0 UUUU: ACALL KEY1 AJMP UUUU OUT: POP ACC RETI;=LUCHENG:MOV R2,TH1 ;路程转化 MOV R3,TL1 MOV R6,#00H MOV R7,#30 ACALL MULD MOV R6,#00 MOV R7,#2 ACALL DIVD MOV A,R2 MOV R6,A MOV A,R3 MOV R7,A ACALL HB2 MOV 37H,R5 ANL 37H,#0FH MOV A,R5 ANL A,#0F0H SWAP A MOV 38H,A MOV A,R4 ANL A,#0FH ADD A,#11 MOV 39H,A MOV A,R4 ANL A,#0F0H SWAP A MOV 3AH,A ACALL AAA ORL P1,#1CH RET;=QL: MOV 20H,#0 MOV R2,#0fh MOV R1,#30H CLR ALQ: MOV R1,A INC R1 DJNZ R2,LQ RETQL2: MOV R2,#0AH MOV R1,#35H MOV A,#0AHLQ1: MOV R1,A INC R1 DJNZ R2,LQ1 RET; (37H38H)中16位二进制整数转换为压缩BCD码十进; 制整数送(3DH,3EH,3FH);程序:IBTD2: NOP MOV 37H,TH1 MOV 38H,TL1 CLR A MOV 3DH,A MOV 3EH,A MOV 3FH,A ;MOV TH1,A ;MOV TL1,A MOV R7,#16LOOP2: CLR C MOV A,38H RLC A MOV 38H,A MOV A,37H RLC A ;(C)为Bi MOV 37H,A;(34H35H36H)+(34H35H36H)+C;=(34H35H36H)*2+C (十进制加) MOV A,3FH ADDC A,3FH DA A MOV 3FH,A MOV A,3EH ADDC A,3EH DA A MOV 3EH,A MOV A,3DH ADDC A,3DH DA A MOV 3DH,A DJNZ R7,LOOP2 NOP RET;=;液晶显示子程序;=START: ORL P1,#1CHSETB P3.7CALL DLY500MOV 0H,#00100100B ;INITIALIZECALL WRCOMMOV 20H,#00010100B ;32768HZCALL WRCOMMOV 20H,#00000001B ;SYS ENCALL WRCOMMOV 20H,#00000011B ;LCD ONCALL WRCOMaaa:CALL WR123 ORL P1,#1CHret;=;=;=;* LCD DRIVER MODE SUB. *;WRITE COMMAND SUB. *WRCOM: SETB P1.4 ;/CS=1NOPCALL DLY5CLR P1.4 ;/CS=0CALL DLY5CLR P1.3 ;/WR=0CALL DLY5NOPSETB P1.2 ;D=1 (100)CALL DLY5NOPSETB P1.3 ;/WR=1CALL DLY5NOPCLR P1.3 ;/WR=0CALL DLY5NOPCLR P1.2 ;D=0CALL DLY5NOPSETB P1.3 ;/WR=1CALL DLY5NOPCLR P1.3 ;/WR=0CALL DLY5NOPCLR P1.2 ;D=0CALL DLY5NOPSETB P1.3 ;/WR=1CALL DLY5NOPMOV R7,#9 ;LOOP=DATA 8 BIT +1XCLR CLOOPWR: NOPCALL DLY5CLR P1.3CALL DLY5MOV A,20HRLC AMOV 20H,AJC WR1CLR P1.2 ;DATA=0CALL DLY5JMP WRRWR1: SETB P1.2 ;DATA=1CALL DLY5WRR: SETB P1.3CALL DLY5DJNZ R7,LOOPWRRET;*;LOOP WRDA SUBWALP:ST1: MOV 21H,23HMOV A,21HADD A,#00000100BMOV 21H,AMOV 23H,Ainc r6CALL WRDDMOV 25H,27HCALL WRDAcjne R6,#29,st1RET;WRITE DATA SUB.*WRDD: SETB P1.4 ;/CS=1CALL DLY5NOPCLR P1.4 ;/CS=0CALL DLY5CLR P1.3 ;/WR=0CALL DLY5SETB P1.2 ;D=1 (101)CALL DLY5SETB P1.3 ;/WR=1CALL DLY5CLR P1.3 ;/WR=0CALL DLY5CLR P1.2 ;D=0CALL DLY5SETB P1.3 ;/WR=1CALL DLY5CLR P1.3 ;/WR=0CALL DLY5SETB P1.2 ;D=1CALL DLY5SETB P1.3 ;/WR=1CALL DLY5MOV R4,#6MOV 22H,21HADDWR2: NOPCALL DLY5CLR P1.3CALL DLY5MOV A,21HRLC AMOV 21H,AJC WR11CLR P1.2 ;DATA=0CALL DLY5JMP WRR1WR11: NOPCALL DLY5 SETB P1.2 ;DATA=1CALL DLY5WRR1: NOPCALL DLY5SETB P1.3CALL DLY5DJNZ R4,ADDWR2RETWRDAMOV R5,#4;LOOP=DATA 4 BITADDWR3: NOPCALL DLY5CLR P1.3CALL DLY5MOV A,25HRRC AMOV 25H,AJC WR12CLR P1.2 ;DATA=0CALL DLY5JMP WRR2WR12: NOPCALL DLY5SETB P1.2 ;DATA=1CALL DLY5WRR2: NOPCALL DLY5SETB P1.3CALL DLY5DJNZ R5,ADDWR3RETDLY5: NOPNOPNOPNOPRETDLY25M: MOV R1,#250 ;12M/2.5MSDLOP: CALL DLY5CALL DLY5DJNZ R1,DLOPRETDLY1S: MOV R0,#20 ;1SDLOP1: CALL DLY25MCALL DLY25MDJNZ R0,DLOP1RETDLY500: MOV R0,#5DLOP11: CALL DLY25MCALL DLY25MDJNZ R0,DLOP11RET;lianxv wr sub=wr123: nopSETB P1.4 ;/CS=1CALL DLY5NOPCLR P1.4 ;/CS=0CALL DLY5CLR P1.3 ;/WR=0CALL DLY5SETB P1.2 ;D=1 (101)CALL DLY5SETB P1.3 ;/WR=1CALL DLY5CLR P1.3 ;/WR=0CALL DLY5CLR P1.2 ;D=0CALL DLY5SETB P1.3 ;/WR=1CALL DLY5CLR P1.3 ;/WR=0CALL DLY5SETB P1.2 ;D=1CALL DLY5SETB P1.3 ;/WR=1CALL DLY5MOV R2,#6LOOP: CLR P1.3 ;/WR=0CALL DLY5CLR P1.2 ;D=0CALL DLY5SETB P1.3 ;/WR=1CALL DLY5DJNZ R2,LOOP mOV R3,#10MOV DPTR,#TABDA MOV 34H,#0AH ;MOV 35H,#0AH MOV 36H,#0AH mov r0,#31h mov 42h,r0LOOP1: MOV A,42H CJNE A,#32H,WU MOV A,R0 ADD A,#11 AJMP YOUWU: mov a,r0YOU: mov b,#03h mul ab mov 41h,aMOVC A,A+DPTRMOV 25H,ACALL WRDA inc 41h mov a,41h movc a,a+dptr mov 25h,a call wrda inc 41h mov a,41h movc a,a+dptr mov 25h,a call wrda mov r0,42h inc r0 mov 42h,r0 DJNZ R3,LOOP1 RETTABDA: DB 01h,06h,07h,01H,04H,00H,01H,03H,05H,01H,07H,04H,01H,05H,02H,00H,07H,06H ;0 1 2 3 4 5DB 00H,07H,07H,01H,06H,00H,01H,07H,07H,01H,07H,06H,00H,00H,00H ;6 7 8 9 .0 DB 05h,06h,07h,05H,04H,00H,05H,03H,05H,05H,07H,04H,05H,05H,02H,04H,07H,06H ;0. 1. 2. 3. 4. 5DB 04H,07H,07H,05H,06H,00H,05H,07H,07H,05H,07H,06H,00H,00H,00H ;6. 7. 8. 9. .;=;() 标号: 功能:双字节二进制无符号数乘法;入口条件:被乘数在R2、R3中,乘数在R6、R7中。;出口信息:乘积在R2、R3、R4、R5中。;影响资源:PSW、A、B、R2R7 堆栈需求: 字节MULD: MOV A,R3 ;计算R3乘R7MOV B,R7MUL ABMOV R4,B ;暂存部分积MOV R5,AMOV A,R3 ;计算R3乘R6MOV B,R6MUL ABADD A,R4 ;累加部分积MOV R4,ACLR AADDC A,BMOV R3,AMOV A,R2 ;计算R2乘R7MOV B,R7MUL ABADD A,R4 ;累加部分积MOV R4,AMOV A,R3ADDC A,BMOV R3,ACLR ARLC AXCH A,R2 ;计算R2乘R6MOV B,R6MUL ABADD A,R3 ;累加部分积MOV R3,AMOV A,R2ADDC A,BMOV R2,ARET;=;() 标号: 功能:双字节二进制无符号数除法;入口条件:被除数在R2、R3、R4、R5中,除数在R6、R7中。;出口信息:OV=0 时,双字节商在R2、R3中,OV=1 时溢出。;影响资源:PSW、A、B、R1R7 堆栈需求: 字节DIVD: CLR C ;比较被除数和除数MOV A,R3SUBB A,R7MOV A,R2SUBB A,R6JC DVD1SETB OV ;溢出RETDVD1: MOV B,#10H ;计算双字节商DVD2: CLR C ;部分商和余数同时左移一位MOV A,R5RLC AMOV R5,AMOV A,R4RLC AMOV R4,AMOV A,R3RLC AMOV R3,AXCH A,R2RLC AXCH A,R2MOV F0,C ;保存溢出位CLR CSUBB A,R7 ;计算(R2R3R6R7)MOV R1,AMOV A,R2SUBB A,R6ANL C,/F0 ;结果判断JC DVD3MOV R2,A ;够减,存放新的余数MOV A,R1MOV R3,AINC R5 ;商的低位置一DVD3: DJNZ B,DVD2 ;计算完十六位商(R4R5)MOV A,R4 ;将商移到R2R3中MOV R2,AMOV A,R5MOV R3,ACLR OV ;设立成功标志RET;=;() 标号: 功能:双字节十六进制整数转换成双字节码整数;入口条件:待转换的双字节十六进制整数在R6、R7中。;出口信息:转换后的三字节码整数在R3、R4、R5中。;影响资源:PSW、A、R2R7 堆栈需求: 字节HB2: CLR A ;码初始化MOV R3,AMOV R4,AMOV R5,AMOV R2,#10H ;转换双字节十六进制整数HB3: MOV A,R7 ;从高端移出待转换数的一位到CY中RLC AMOV R7,AMOV A,R6RLC AMOV R6,AMOV A,R5 ;码带进位自身相加,相当于乘ADDC A,R5DA A ;十进制调整MOV R5,AMOV A,R4ADDC A,R4DA AMOV R4,AMOV A,R3ADDC A,R3MOV R3,A ;双字节十六进制数的万位数不超过,不用调整DJNZ R2,HB3 ;处理完RET;=;24c02存储器的使用;*开始STA: SETB P1.1 SETB P1.0 NOP NOP CLR P1.1 NOP NOP CLR P1.0 RET;*停止STOP: CLR P1.1 SETB P1.0 NOP NOP SETB P1.1 NOP NOP CLR P1.0 RET;*发送应答MACK: CLR P1.1 SETB P1.0 NOP NOP CLR P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论