资源目录
压缩包内文档预览:
编号:511810
类型:共享资源
大小:770.54KB
格式:RAR
上传时间:2015-11-11
上传人:QQ28****1120
认证信息
个人认证
孙**(实名认证)
辽宁
IP属地:辽宁
6
积分
- 关 键 词:
-
毕业设计
- 资源描述:
-
DZ224多功能出租车计价器,毕业设计
- 内容简介:
-
39 4.5 程序清单 主程序: ORG 0000H AJMP MAIN ;上电,跳向主程序 ORG 000BH ; T0的中断入口 AJMP IT0P ;跳 T0的中断服务入口 ORG 1000H MAIN: MOV TMOD, #01H ;设 T0为方式 1定时 MOV 20H, #0AH ;中断次数为 20H单元 CLR A ; A清零 MOV 30H, A ;“时”单元清零 MOV 31H, A ;“分”单元清零 MOV 32H, A ;“秒”单元清零 SETB ET0 ;允许 T0申请中断 SETB EA ; CPU开中断 MOV TH0, #3CH ;给 T0装入计数初值 MOV TL0, #0B0H SETB TR0 ;启动 T0 HERE: SJMP HERE ;等待中断(也可调用显示子程序) IT0P: PUSH PSW ; T0中断服务程序入口,保护现场 PUSH Acc MOV TH0, #3CH ;重新给 T0装入初值 MOV TL0, #0B0H DJNZ 20H, RETUNT ;一秒未到,返回 MOV 20H, #0AH ;一秒时间到,重置中断次数 MOV A, #01H ;“秒”单元增 1 ADD A, 32H DA A ;“秒”单元十进制调整 MOV 32H, A ;“秒”的 BCD码存回“秒”单元 CJNE A, #60H, RETUNT;是否到 60秒,未到则返回 MOV 32H, #00H ;计满 60秒,“秒”单元 清零 MOV A, #01H ;“分”单元增 1 ADD A, 31H DA A ;“分”单元十进制调整 MOV 31H, A ;“分”的 BCD码存回“分”单元 CJNE A, #60H, RETUNT;时候到 60分,未到则返回 MOV 31H, #00H ;计满 60分,“分”单元清零 MOV A, #01H ;“时”单元增 1 ADD A, 30H DA A ;“时”单元十进制调整 MOV 30H, A CJNE A, #24, RETUNT;是否到 24小时,未到则返回 nts 40 MOV 30H, #00H ;“时”单元增 1 RETUNT: POP Acc ;恢复现场 POP PSW RETI ;中断返回 END 键盘扫描子程序: KEYIN: MOV DPTR, #BFFFH ;键盘地址 BFFFH MOVX A, DPTR ;读键盘状态 ANL A, #1FH ;屏蔽高三位 MOV R2, A ;保存键盘状态值 LCALL D10ms ;调用延时 10ms子程序,消抖 MOVX A, DPTR ;再读键盘状态 ANL A, #1FH ;屏蔽高三位 CJNE A, R2, PASS ;两次结果不一样,说明是抖动引起的,转 PASS CJNE A, #1EH, KEY2 ; K1键未按下,转 KEY2 LJMP PKEY1 ;是第一键按下,转键 1 处理子程序 KEY2: CJNE A, #1DH, KEY3 ; K2键未按下,转 KEY3 LJMP PKEY2 ; K2键按下,转 PKEY2处理 KEY3: CJNE A, #1BH, KEY4 ; K3未按下,转 KEY4 LJMP PKEY3 ; K3键按下,转 PKEY3处理 KEY4: CJNE A, #0FH, RETUNT ; K4键未按下,转 RETUNT LJMP PKEY4 ; K4键按下,转 PKEY4处理 RETUNT: RET ;重键或无键按下,不作处理从本子程序返回 计量子程序: ORG 10000H START4: SETB P1.0 ; P1.0为高电平 CLR P1.1 ; P1.1为低电平 LOOPA: MOV TCON, #00H MOV TMOD, #06H ; T0为计数方式 2 MOV TH0, #0FFH ;计数一次就溢出 MOV TL0, #0FFH SETB TR0 ;启动 T0 LOOPB: JBC TF0, LOOPC ;检测到溢出就跳转 SJMP LOOPB LOOPC: CLR TR0 MOV TMOD, #02H ; T0为定时方式 2 MOV TH0, #06H ;置 T0初值,延时 500us nts 41 MOV TL0, #06H MOV R5, #14H ;置循环 20次 CLR P1.0 ; P1.0为低 SETB P1.1 ; P1.1为高 SETB TR0 ;启动 T0 LOOPD: JBC TF0, LOOPE ;检测 500us定时到? SJMP LOOPD LOOPE: DJNZ R5, LOOPD ;延时 10ms SETB P1.0 ; P1.0为高 MOV R5, #0AH ;循环 10次 LOOPF: JBC TF0, LOOPG ;检测 500us定时到? SJMP LOOPF LOOPG: DJNZ R5, LOOPF ;延时 5ms CLR P1.1 ; P1.1为低 CLR TR0 SJMP LOOPA END 日历时钟子程序: 写入程序: MOV 68H, #52H ;秒 MOV 67H, #34H ;分 MOV 66H, #19H ;时 MOV 65H, #26H ;日 MOV 64H, #03H ;星期 MOV 63H, #12H ;月 MOV 62H, #03H ;年 MOV 61H, #00H ;写保护内容 WRCR: CLR P1.1 ; CLK=0 CLR P1.0 ; /RST=1 MOV A, #8EH ;写保护命令字节 LCALL WBYTE MOV A, #00H ;解除写保护命令 LCALL WBYTE SETB P1.0 ; /RST=0,终止传送 CLR P1.1 ; CLK=0 CLR P1.0 ; /RST=1,启动传送 MOV A, #0BEH ;多字节写命令 LCALL WBYTE MOV R0, #68H MOV R2, #08H LOOPW: MOV A, R0 LCALL WBYTE nts 42 DEC R0 DJNJ R2,LOOPW CLR P1.1 ; CLK=0 SETB P1.0 ; /RST=0 RET WBYTE: MOV R1,#08H LOOP1: CLR P1.1 ; CLK=0 RRC A ; 从 D0开始 MOV P1.2, C SETB P1.1 ; CLK=1 DJNZ R1, LOOP1 RET 读入程序: RDCR: CLR P1.1 ; CLK=0 CLR P1.0 ; /RST=1 MOV A, #0BFH ;多字节读命令 LCALL WBYTE ;写入命令 MOV R0, #6FH MOV R2, #08H SETB P1.2 ; P1.7准备输入 LOOPR: LCALL RBYTE DEC R0 DJNZ R2, LOOPR CLR P1.1 ; CLK=0 SETB P1.0 ; /RST=0 RET RBYTE: MOV R1, #08H LOOP2: CLR P1.1 ; CLK=0 MOV A, R0 MOV C, P1.2 RRC A MOV R0, A SETB P1.1 ; CLK=1 DJNZ R1, LOOP2 RET 显示子程序: 主 程序 ORG 0000H MOV SP, #50H LCALL MAXA ; MAX初始化程 序 LOOP: LCALL DISP ;显示程序 nts 43 SJMP LOOP ;重复 两片 MAX7219初始化程序: MAXA: MOV R2, #0BH MOV R3, #07H MOV R5, #07H LCALL YW MOV R2, #0AH MOV R3, #0FH MOV R5, #0FH LCALL YW MOV R2, #09H MOV R3, #0FFH MOV R5, #0FFH LCALL YW MOV R2, #0CH MOV R3, #01H MOV R5, #01H LCALL YW RET 显示程序 DISP: MOV R0, #40H ; MAX7219A显示缓冲区首地址 MOV R1, #48H ; MAX7219B显示缓冲区首地址 MOV R2, #01H ; MAX7219内 RAM0地址 MOV R6, #08H LOOP1: MOV A, R0 MOV R3, A MOV A, R1 MOV R5, A LCALL YW INC R0 INC R1 INC R2 DJNZ R6, LOOP1 RET YW: MOV A, R2 LCALL SEND ;移入 MAX7219 16位数据 MOV A, R5 LCALL SEND MOV A, R2 LCALL SEND MOV A, R3 LCALL SEND CLR P1.7 NOP nts 44 NOP SETB P1.7 ;装载数据 RET SEND: MOV R4, #08H ;移入八位数据 LOOP2: CLR P3.1 RLC A MOV P3.0, C NOP NOP NOP SETB P3.1 DJNZ R4, LOOP2 RET 数据传送程序 DIS-DIN EQU P3.0 ; MAX7219数据输入线 DIS-CLK EQU P3.1 ; MAX7219时钟输入线 DISP: CLR RS0 CLR RS1 MOV R1, #08H DISP01: RLC A JC DISP03 LJMP DISP04 DISP02: DJNZ R1, DISP01 RET DISP03: SETB DIS-DIN SETB DIS-CLK CLR DIS-CLK CLR DIS-DIN LJMP DISP02 DISP04: CLR DIS-DIN SETB DIS-CLK CLR DIS-CLK LJMP DISP02 AT93C46在 89C51的扩展子程序: ;读一字节数据程序, A 命令 ;占用 D7, D6, D5三位 1 SU5CF: PUSH B MOV A, #0C0H ;读操作命令 ACALL SU62B MOV B, #08 LA5D8: SETB P2.5 CLR P2.5 nts 45 MOV C, P2.3 RLC A DJNZB, LA5D8 CLR P2.6 POP B RET ;写命令和七位地址,三位命令码在 A的高三位 ;七位地址在 DPL中 1 SU62B: CLR P2.6 CLR P2.5 SETB P2.6 MOV B, #3 LA634: RLC A MOV P2.4, C SETB P2.5 CLR P2.5 DJNZB, LA634 MOV A, DPL RLC A MOV B, #7 LA644: RLC A MOV P2.4, C SETB P2.5 CLR P2.5 DJNZ LA644 CLR P2.4 RET ;写数据程序 SU5E7: PUSH B PUSH ACC CALL SU61A MOV A, #0A0H ACALL SU62B POP ACC MOV B, #8 LA5FC: RLC A MOV P2.4, C SETB P2.5 CLR P2.5 DJNZB, LA5FC CLR P2.6 POP B RET ;字擦除程序 nts 46 SU61A: PUSH B MOV A, #0E0H LA61E: ACALL SU62B CLR P2.6 POP B RET ;片擦除使能 SU608: PUSH B MOV DPL, #60H MOV A, #80H ACALL
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。