单片机 散转表程序的使用

发布者:快乐的舞蹈最新更新时间:2016-01-22 来源: eefocus关键字:单片机  散转表程序 手机看文章 扫描二维码
随时随地手机看文章
使用散转表可以尽可能的减少程序的编写,方便。

减少判断次数。

程序名:散转程序试验
;说明: 开使后led1亮,按下任何按键,寄存器r0从零加起,根据r0内容,程序散转到
;相应处执行,以点亮不同的led
;入口: p3.0--p3.3
;出口: P0
;练习日期:2007--06--17     好心情

;修正日期:2007--06--18    
;修正内容:将原来用ljmp的部分换为ajmp,将R0结束值改为08
;**************************************************************************
    org    0000h
    ljmp    main
    org    0030h
main:   mov    p0,     #07fh      ;初始化p0口,led1点亮
    mov    r0,     #00h      ;初始化R0,使R0置1
;**********************按键检测********************************************
st:   mov    P3,     #0Fh      ;设置P3口,为检测按键做准备,将p3低3位置0
    mov    a,      p3       ;读p3口状态
    cjne    a,      #0fh,    F1   ;判断是否有按键按下,若有则跳到F1 处(比较转移,比较a与#0fh的大小
                   ;若不相等,责转移,否则顺序往下执行,如果第一个数大于第二个数,则CY
                   ;清零,否则置1,不影响其它操作位,3字节指令
    acall    del
    ajmp    st
;**********************去抖动***********************************************
F1:   acall    del           ;延时
    cjne    a,      #0fh,    f2   ;再次判断按键,若按下,则区按键处理程序,否则为干扰
    ajmp    st
;**********************按键处理*********************************************mov
F2:   inc    r0            ;r0加1
    cjne    r0,     #08h,    F3   ;判断R0是否=8,若等于,则顺序执行并将R0,清0,否则跳转到散转程序
    mov    r0,     #00h      ;R0清零
    ajmp    main
;**********************散转处理*********************************************
F3:   mov    DPTR,     #TAB      ;将数据表地址传送到DPTR
    mov    a,      R0       ;将偏移量送入a
    clr              ;清零进位位
    rlc              ;累加器a内容左移,(相当于*2)
    jnc    nadd           ;若cy为零,则跳转到NADD,否则顺序执行
    inc    dph           ;若cy为1时,DPH+1(因为DPTR为16位地址,a为8位,在此处加一,相当于DPTR低8位
                   ;向高8位进位)修正地址
NADD:   jmp    @a+DPTR          ;散装指令,将a中的无符号数与数据指针DPTR的16位相加,相加之和做为下一条指令的
                   ;地址送入PC中,不改变a和dptr,也不影响标志位,采用变址方式实现无条件转移
                   ;其特点时转移地址可以在程序中加以改变
;***********************数据表************************************************
TAB:   nop
    nop               ;空指令,修正地址
    ajmp    pb1
    ajmp    pb2
    ajmp    pb3
    ajmp    pb4
    ajmp    pb5
    ajmp    pb6
    ajmp    pb7
   
   
;***********************延时***************************************************
del:   mov    R1,    #014h
d1:   mov    R2,    #0FFH
d2:   mov    r5,    #01fh
    djnz    R5,    $
    djnz    R2,    d2
    djnz    R1,    d1
    ret
;***********************显示**************************************************
pb1:   mov    p0,    #03fh
    acall    del
    ljmp    st
pb2:   mov    p0,    #01fh
    acall    del
    ljmp    st
pb3:   mov    p0,    #0fh
    acall    del
    ajmp    st
pb4:   mov    p0,    #07h
    acall    del
    ajmp    st
pb5:   mov    p0,    #03h
    acall    del
    ajmp    st
pb6:   mov    p0,    #01h
    acall    del
    ajmp    st
pb7:   mov    p0,    #00h
    acall    del
    ajmp    st
    end

关键字:单片机  散转表程序 引用地址:单片机 散转表程序的使用

上一篇:单片机中断小实验
下一篇:单片机 散转表程序的使用

推荐阅读最新更新时间:2024-03-16 14:45

实例讲解PIC单片机之AD设置步骤
AD 转换 我们先看看 R1 和 R2,R2 是个可调电阻 如果我们将 R2 变大 RA0 这个管脚上的电压就越大。R2 变小 RA0 这个管脚上的电压就越小。那单片机是怎么知道电压变化的。这就需要 AD 转换。就是将模拟量转换成数字量。 PIC 单片机如何表示电压 PIC 用十位二进制位的数来表示电压,也就是数值 0~1023 来表示电压。那比如现在这个数值是 400 那这代表多少的电压?这就要根据参考电压来确定了。 比如我们设置正参考电压为 3.3V ,当输入的电压为 0 时,数值就为 0。当输入的电压为 3.3V 时,数值就是 1023. 那如果输入的电压是 1.2V 代表多少电压。 首先,先算出一个数值
[单片机]
实例讲解PIC<font color='red'>单片机</font>之AD设置步骤
单片机寄存器组注意重复使用原数据可能被覆盖危险
大家都知道51单片机有的寄存器R0-R7共有四组。很多朋友对寄存器组的使用时经常出现问题。虽然这并不是多难的问题,但如果出现错误,也会造成很严重的后果。 首先介绍一下51的寄存器组: 通过设置PSW寄存器的第3位和第4位可以任意切换寄存器组。在进入中断前,切换寄存器组,可以方便的保护原寄存器组的数据不被中断里的语句破坏,很方便。 RS1 RS0 字节地址 0 0 0组寄存器 00H~07H 0 1 1组寄存器 08H~0FH 1 0 2组寄存器 10H~17H 1 1 3组寄存器 18H~1FH RS1=PSW.4 RS0=PSW.3
[单片机]
单片机简易8键电子琴程序
简易8键电子琴的原理图: 单片机源程序如下: /******************************************************************* ******************************************************************** ********* 51简易电子琴程序 ***************** ******************************************************************** ********* ****************/ #inc
[单片机]
<font color='red'>单片机</font>简易8键电子琴<font color='red'>程序</font>
具有V/F和F/V综合性芯片TD650与单片机接口及程序设计
  TD650是高精度、高频型单片集成 电压 /频率(V/F)和频率/电压(F/V)转换电路。主要特点有:      ①工作频率高,最高工作频率可达1 MHz。      ②非线性和温漂低。满度输出频率为10 kHz时,非线性度典型值为0.002%,最大值为0.005%,温漂小于±7.5×10(-5)/℃。      ③输入电压范围大,输入方式可以是单极性、双极性、差动输入电压或单极性输入电流。      ④频率输出采用输出管集电极开路输出,其上拉电阻可接+30 V、+15 V或+5 V电源,并可与TTL或CMOS电路兼容。      ⑤外围电路结构简单,既可作V/F转换,又可作F/V转换。      ⑥具有独立的数字地与模拟地。
[单片机]
具有V/F和F/V综合性芯片TD650与<font color='red'>单片机</font>接口及<font color='red'>程序</font>设计
基于单片机的电动车蓄电池智能管理系统设计
引言 电动汽车的无(低)污染优点,使其成为当代汽车发展的主要方向。电动汽车的发展需要解决两大难题,即能量存储和动力驱动。由于短期内动力电池储能不足的问题难以解决,使能量管理技术成为电动汽车发展的关键。在传统充电技术中,常用的恒压充电、恒压限流充电、恒流充电等模式,都是由人工控制充电过程,大多存在着严重的过充电现象。充电质量的好坏,直接影响蓄电池的使用寿命。而新型蓄电池智能管理系统的设计,就是为了在线检测动力电池状态,提高充电质量和效率,使操作人员只担任辅助性工作。 740)this.width=740" border=undefined> 图1系统原理框图 管理系统的组成及硬件设计 本文设计的智能化管理系统是
[单片机]
超低功耗MCU助力便携式医疗设备
价格合理的先进个人医疗设备的大量涌现,正在改变着整个保健行业,消费者可以在家中或旅途中监测自身的生命体征和其他关键指标,而无需劳命伤财地亲自到医院看病。根据Gartner公司的调查,便携式消费类医疗设备,如血糖检测仪、血压计、胰岛素泵和心率检测器等是医疗设备市场中增长最快的部分。Databeans公司最近所做的一项医疗半导体报告也指出,未来五年家用医疗设备市场将有9%的增长(复合年增长率,CAGR)。   个人医疗设备市场的迅速增长源于多种因素:老年人需要经常性地进行健康体检、传统医疗服务费用高昂、消费者逐渐意识到保健设备的益处、个人医疗设备可以方便地在网上或零售店里买到、半导体技术的不断进步,使得这些消费类保健设备日益成熟
[工业控制]
超低功耗<font color='red'>MCU</font>助力便携式医疗设备
关于51单片机“外部中断触发方式”的经验总结
51单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器周期检测到中断源口线为高电平,下一个机器周期检测到低电平,即置位中断标志,请求中断。 这个原理很好理解。但应用时需要特别注意的几点: 1) 电平触发方式时,中断标志寄存器不锁存中断请求信号。也就是说,单片机把每个机器周期的S5P2采样到的外部中断源口线的电平逻辑直接赋值到中断标志寄存器。标志寄存器对于请求信号来说是透明的。这样当中断请求被阻塞而没有得到及时响应时,将被丢失。换句话说,要使电平触发的中断被CPU响应并执行
[单片机]
MCU 面临 800V 电动汽车牵引逆变器的 3 种挑战
电动汽车 (EV) 牵引逆变器是电动汽车的核心。它将高压电池的直流电转换为多相(通常是三相)交流电来驱动牵引电机并控制制动能量的再生。电动汽车电子设备正在从 400V 架构转向 800V 架构,这正在逐步现实、普及,更高的电压会带来至少三个好处: - 快速充电 - 在相同电流下提供双倍的电量。 - 通过使用碳化硅 (SiC) 提高效率和功率密度。 - 通过使用更细的电缆来减轻重量,从而减少 800V 相同额定功率所需的电流。 在牵引逆变器中,微控制器(MCU)是系统的大脑,通过模数转换器(ADC)执行电机控制、电压和电流采样,使用磁芯计算磁场定向控制(FOC)算法,使用脉宽调制 (PWM) 信号驱动功率场效应晶体管
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved