;单片机汇编语言编程:汽车转向灯控制器
来源:互联网 发布:svg3dtagcloud.js 编辑:程序博客网 时间:2024/05/16 18:04
;刚才在百度知道上看到一个题目:http://zhidao.baidu.com/question/439326240.html
;转眼之间,知道宝贝又找不到了,百度真是变化莫测。
;呵呵,做而论道已经提前一步保存下来了题目的要求。
;=================================================
;题目:汽车转向灯控制器的编程
;1号键(左转向)按下时 实现P3.6闪亮,P0-P2口左流水;
;2号键(右转向)按下时 实现P3.7闪亮,P0-P2口右流水;
;3号键(刹车键)按下时 实现P0-P2口同时亮;
;4号键(紧急状况键) 按下时 实现P3.6和P3.7同时闪亮。
;按键按住时,执行上述程序,按键松开后关闭所有灯。
;=================================================
;按照题目要求,做而论道编写了程序,用 PROTEUS 绘出了仿真电路图,运行起来如下所示:
;图片链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/b4f3e2dea9ec8a134811484bf703918fa1ecc077.html#
;程序如下:
L_T BIT 00H ;按键标志位
R_T BIT 01H
S_T BIT 02H
J_J BIT 03H
SAME EQU 30H ;按键缓冲区
Runw EQU 31H ;31H 32H,共16位数,当做流水灯
SP_B EQU 33H ;栈底位置
;--------------------------------
ORG 0000H
SJMP START
ORG 000BH
SJMP T0_INT
;--------------------------------
START:
MOV TMOD, #01H
MOV TH0, #4CH ;定时
MOV R3, #5 ;250ms闪烁一次
SETB TR0
MOV IE, #82H ;开中断
MOV SP, #SP_B
MOV Runw, #255
MOV Runw + 1, #0
;--------------------------------
M_LOOP:
MOV A, P1 ;读一次按键
ANL A, #0FH
MOV SAME, A ;保存
MOV R7, #40 ;延时约20ms
MOV R6, #0
DJNZ R6, $
DJNZ R7, $ - 4
MOV A, P1 ;再读一次按键
ANL A, #0FH
CJNE A, SAME, M_LOOP ;两次不等则是抖动
CPL A
MOV C, ACC.3 ;保存按键信息
MOV R_T, C
MOV C, ACC.2
MOV J_J, C
MOV C, ACC.1
MOV S_T, C
MOV C, ACC.0
MOV L_T, C
SJMP M_LOOP ;继续去读
;--------------------------------
T0_INT:
MOV TH0, #4CH ;定时
PUSH ACC
DJNZ R3, T0_END ;不到5次就退出
MOV R3, #5
;----------------------;以下每隔250ms执行一次
LEFT:
JNB L_T, RIGHT
MOV A, Runw
RRC A
MOV Runw, A
MOV A, Runw + 1
RRC A
MOV Runw + 1, A
MOV A, Runw
MOV ACC.7, C
MOV Runw, A
MOV P2, Runw
MOV P0, Runw + 1
SETB P3.7
CPL P3.6
JMP T0_END
RIGHT:
JNB R_T, STOP
MOV A, Runw
RLC A
MOV Runw, A
MOV A, Runw + 1
RLC A
MOV Runw + 1, A
MOV A, Runw
MOV ACC.0, C
MOV Runw, A
MOV P2, Runw
MOV P0, Runw + 1
CPL P3.7
SETB P3.6
JMP T0_END
STOP:
JNB S_T, JINJI
MOV P2, #0
MOV P0, #0
SETB P3.7
SETB P3.6
JMP T0_END
JINJI:
JNB J_J, NOTHING
MOV P2, #255
MOV P0, #255
CPL P3.7
CPL P3.6
JMP T0_END
NOTHING: ;关闭所有的灯
MOV P2, #255
MOV P0, #255
SETB P3.7
SETB P3.6
T0_END:
POP ACC
RETI
;--------------------------------
END
;试验的时候,应该释放了前一个按键,再按下另一个按键,这才能有理想的结果。
- ;单片机汇编语言编程:汽车转向灯控制器
- C51单片机嵌入式系统设计1——模拟汽车转向灯
- 单片机汇编语言编程规范
- 单片机汇编语言模块化编程-LCD1602驱动
- 单片机汇编语言编程:按键、计数及显示
- 51单片机汇编语言编程:开关控制计时
- 单片机 MSP430 IIC控制器编程(1)
- 单片机 MSP430 IIC控制器编程(2)
- 浅谈汽车转向灯的具体拆装方法
- 汇编语言实现跑马灯 8051单片机
- 闪烁灯-51单片机-asm-汇编语言
- 汇编语言实现跑马灯 8051单片机
- 新到一小弟,求助单片机汇编语言编程大全讲解
- 51单片机汇编语言编程:用定时器控制输出矩形波
- 单片机汇编语言编程:对 A 中内容开平方
- 51 单片机汇编语言编程:从 99 到 0 倒计时
- 汽车转向的机理——滑移角、转向力、转向过度、转向不足、轮胎选择
- 单片机汇编语言指令
- 输入十进制数,显示其二进制形式中 1 的个数
- LeetCode----Power of Three
- 用 8550 和 ULN2003 驱动小型直流电机正反转
- 80x86汇编编程:把一串字符从键盘输入,然后逆序输出
- 大尺寸共阴数码管驱动电路
- ;单片机汇编语言编程:汽车转向灯控制器
- 80x86汇编语言编程:按下任意键,以二进制和16进制输出该键所对应的 ASCII 码
- 如何监控 Tomcat?Zabbix 与 Cloud Insight 对比
- 多路温度检测
- 【SDOI2015】【BZOJ3993】星际战争
- 595输出驱动数码管闪烁
- android 属性系统,SystemProperties 的简介
- 7月21日的特大暴雨中的平民英雄
- 三周年纪念