首页 > 应用 > 单片机应用
[导读]
;刚才在百度知道上看到一个题目:http://zhidao.baidu.com/question/439326240.html;转眼之间,知道宝贝又找不到了,百度真是变化莫测。;呵呵,做而论道已经提前一步保存下来了题目的要求。;==========

;刚才在百度知道上看到一个题目:http://zhidao.baidu.com/question/439326240.html

本文引用地址: http://www.21ic.com/app/mcu/201806/764432.htm

;转眼之间,知道宝贝又找不到了,百度真是变化莫测。

;呵呵,做而论道已经提前一步保存下来了题目的要求。

;=================================================

;题目:汽车转向灯控制器的编程

;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

;试验的时候,应该释放了前一个按键,再按下另一个按键,这才能有理想的结果。


换一批

延伸阅读

[单片机应用] 单片机I/O口管脚内部结构

单片机I/O口管脚内部结构

学习ARM嵌入式的时候,发现自己对以前学过的数模器件的知识遗忘了不少,按照我的进度本来应该继续学习ARM微处理器控制的课程,但想着后来势必还会遇到相同的问题所以就准备中断一下,杀回来把汇编和一些电路知识再总......

关键字:单片机 I O口管脚 内部结构

[单片机应用] 关于单片机串口发送和接收的问题

关于单片机串口发送和接收的问题

串口初始化过程:    1、确定T/C1的工作方式--TMOD    2、设置T/C初始值----------------------------TH1、TH2    3、启动T/C-----------------------------......

关键字:单片机 串口 发送和接收

[单片机应用] 上位机控制单片机LED

上位机控制单片机LED

整了一天程序,写了个上位机程序和单片机程序。总结下。。。上位机部分:相关参考资料:http://wenku.baidu.com/view/5ea8670403d8ce2f00662322.html1.先添加各控件,添加后的对话框如下图:2.......

关键字:上位机 控制单片机 LED

[单片机应用] 用单片机做一个计算器

用单片机做一个计算器

硬件电路程序#include T89X51.H>#define DIN P1_0#define CLK P1_2#define LOAD P1_1unsigned char key_h,key_l,key_code;unsigned ......

关键字:单片机 计算器

[单片机应用] 串行口异步通信单片机程序设计实例

串行口异步通信单片机程序设计实例

org 0000HAJMP STARTORG 30HSTART:mov SP,#5fh ;mov TMOD,#20h ;T1: 工作模式2mov PCON,#80h ;SMOD=1mov TH1,#0FDH ;初始化波特率(参见表)mov ......

关键字:串行口 异步通信 单片机

[单片机应用] AVR单片机(学习ing)—(十)、ATMEGA16的同步串行接口SPI—02

AVR单片机(学习ing)—(十)、ATMEGA16的同步串行接口SPI—02

1)那就是在之前的介绍中说过,在说一遍~~主机和从机的两个移位寄存器可以被认为是一个公开的16位环形移位寄存器,当数据从主机移向从机时,同时从机饿数据也向相反的放向移向主机。这就意味着在一个以为周期内,主机......

关键字:AVR单片机 ATMEGA16 同步串行接口 SPI

[单片机应用] 单片机轻松入门之三:蜂鸣器

单片机轻松入门之三:蜂鸣器

单片机轻松入门之三蜂鸣器该电路较简单,用PNP型三极管驱动蜂鸣器,当P3.7为低电平时,PN结正向偏置,三极管导通,蜂鸣器发声。程序如下:#include#define uchar unsigned charsbit sounder=P3^......

关键字:单片机 蜂鸣器

[测试测量] 工程师必学:如何使用示波器调试电源固件

工程师必学:如何使用示波器调试电源固件

依本人之见,示波器是调试模拟电源的最好工具,对于数字控制电源而言也是如此。通过代码进行单步执行不是一个可行的办法,因为这很容易烧掉 FET。然而,数字系统的挑战在于很多信号在芯片内部消失。敬请......

关键字:示波器 调试 电源固件

我 要 评 论

网友评论

芯闻号

技术子站

更多

项目外包

更多

推荐博客