单片机与单片机串行通讯+键盘扫描+数码管显示

发布者:丹青妙手最新更新时间:2016-03-18 来源: eefocus关键字:单片机  串行通讯  键盘扫描  数码管显示 手机看文章 扫描二维码
随时随地手机看文章
发送的子程序:

      MOV TMOD,#20H

      MOV SCON,#11010000B
      ANL PCON,#01111111B
      MOV TH1,#0FDH
      MOV TL1,#0FDH
      SETB TR1

ALOOP1: INC R7
            MOV A,R7
            MOV 35H,A
            MOV SBUF,#0E1H
            JNB TI,$
            CLR TI
            JNB RI,$
            CLR RI
            MOV A,SBUF
            XRL A,#0E2H
            JNZ ALOOP1
    ALOOP2: MOV R0,#30H
            MOV R7,#06H
            MOV R6,#00H
    ALOOP3:MOV SBUF,@R0
            MOV A,R6
            ADD A,@R0
            MOV R6,A
            INC R0
            JNB TI,$
            CLR TI
            DJNZ R7,ALOOP3
            MOV SBUF,R6
            JNB TI,$
            CLR TI
            JNB RI,$
            CLR RI
            MOV A,SBUF
            CJNE A,#00H,ALOOP2
            CLR TI
            CLR RI
            RET

接收子程序:

      MOV TMOD,#20H

      MOV SCON,#11010000B
      ANL PCON,#01111111B
      MOV TH1,#0FDH
      MOV TL1,#0FDH
      SETB TR1

BLOOP1:
          JNB RI,$
          CLR RI
          MOV A,SBUF
          XRL A,#0E1H
          JNZ BLOOP1
          MOV SBUF,#0E2H
          JNB TI,$
          CLR TI
    RETT: MOV R0,#30H
          MOV R7,#06H
          MOV R6,#00H
    BLOOP2:JNB RI,$
          CLR RI
          MOV A,SBUF
          MOV @R0,A
          INC R0
          ADD A,R6
          MOV R6,A
          DJNZ R7,BLOOP2
          JNB RI,$
          CLR RI
          MOV A,SBUF
          XRL A,R6
          JZ END1
          MOV SBUF,#0FFH
          JNB TI,$
          CLR TI
          AJMP RETT
      END1:MOV SBUF,#00H
            JNB TI,$
            CLR TI
            CLR RI
            AJMP BLOOP1

中断显示,数码管显示:

;针对实验板的键盘扫描,显示程序
;使用中断T0进行键盘的扫描和T1进行显示
;显示缓冲区设在30H到35H里
;***********************初始化程序*********************
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP IT00


ORG 0030H
MAIN: MOV R0,#7FH
LOOP: MOV @R0,#00H
      DJNZ R0,LOOP
      MOV SP,#70H
      MOV 37H,#30H ;把30H的一个缓冲区第一位保存,以后作为指针来用
      MOV 09H,#30H ;把30H放到第一组工作寄存器R1中
      MOV 08H,#30H ;把30H放到第一组工作寄存器R0中
      MOV 0CH,#20H

      CLR 00H
      CLR 01H
      CLR 02H ;初始化位地址00H,01H,02H
      MOV TMOD,#01H
      MOV TH0,#0FCH
      MOV TL0,#018H
      SETB TR0
      SETB ET0
      SETB EA ;启动定时
HEAR:

      AJMP HEAR
;*******************************中断T0键盘+显示**********************
IT00:
    CLR EA
    PUSH ACC
    PUSH B
    PUSH PSW
    PUSH DPH
    PUSH DPL
    SETB RS0
    CLR RS1
    MOV DPTR,#1FFFH
    MOV A,#00H
    MOVX @DPTR,A
    JB P1.7,PASS0
    JB 00H,CP
    SETB 00H
    AJMP PASS
CP:JB 01H,PASS
    SETB 01H
    AJMP KEYSELECT
;*********************判断健盘的具体位置********************
KEYSELECT:
    MOV A,#0FEH
    MOVX @DPTR,A
    JNB  P1.7,KEYS5
    RL A
    MOVX @DPTR,A
    JNB P1.7,KEYS4
    RL A
    MOVX @DPTR,A
    JNB P1.7,KEYS3
    RL A
    MOVX @DPTR,A
    JNB P1.7,KEYS2
    RL A
    MOVX @DPTR,A
    JNB P1.7,KEYS9
    RL A
    MOVX @DPTR,A
    JNB P1.7,KEYS8
    RL A
    MOVX @DPTR,A
    JNB P1.7,KEYS7
    RL A
    MOVX @DPTR,A
    JNB P1.7,KEYS6
;******************************键盘功能模块**************************
    KEYS4:
      AJMP PASS

KEYS6:JB 02H,PASS
      MOV A,@R0
      MOV R5,A
      INC R5
      MOV A,R5
      MOV @R0,A
      CJNE R5,#0AH,PASS
      MOV @R0,#00H
      AJMP PASS
KEYS7:JB 02H,PASS
      MOV A,@R0
      MOV R5,A
      DEC R5
      MOV A,R5
      MOV @R0,A
      CJNE R5,#0FFH,PASS
      MOV @R0,#09H
      AJMP PASS

KEYS8:JB 02H,PASS

      MOV R0,37H
      INC R0
      MOV 37H,R0
      CJNE R0,#36H,PASS
      MOV 37H,#30H
      MOV R0,37H
      AJMP PASS
KEYS2:
      AJMP PASS
KEYS5:
      CPL 02H
      AJMP PASS
KEYS3:AJMP PASS
KEYS9:AJMP PASS
;************************键盘功能结束******************************
PASS0:
    CLR 00H
    CLR 01H
PASS:
;****************************中断T1显示***************************
        MOV  A,@R1
        mov  dptr, #tab
        MOVC  A,@A+DPTR
        MOV R2,A
        JB 02H,RE
;*********************闪烁程序**********************
        MOV A,R0
        CLR C
        SUBB A,R1
        JNZ RE
        INC R3
        MOV A,R3
        SUBB A,#4FH
        JNC RE
        MOV A,#0FFH
        MOV DPTR, #9FFFH
        MOVX @DPTR,A
        AJMP RE1

  RE:
  MOV  dptr,#09FFFH
        MOV A,R2
        MOVX @DPTR,A

  RE1:  MOV A,R4
        MOV DPTR,#7FFFH
        MOVX @DPTR,A

        INC  R1
        MOV  A,R4
        JB    ACC.0,FORMAT
        RR    A
        MOV  R4,A
        AJMP EXIT
FORMAT:  MOV  R1,#30H
  MOV  R4,#20H

EXIT:  MOV TH0,#0FCH
        MOV TL0,#018H
        POP DPL
        POP DPH
        POP PSW
        POP B
        POP ACC
        SETB EA
        RETI

TAB:          DB  0c0H, 0f9H, 0a4H, 0b0H, 99H, 92H
                          5
                00H  01H  02H  03H  04H  05H
;
              DB  82H, 0f8H, 80H, 90H  0FFH
                      9
关键字:单片机  串行通讯  键盘扫描  数码管显示 引用地址:单片机与单片机串行通讯+键盘扫描+数码管显示

上一篇:基于STC单片机的PCF8563读写程序
下一篇:单片机存储系统彻底研究(总结)

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

51单片机程序设计中的地址指针及其应用
CS-51单片机外部RAM的地址空间为64K,地址总线为16位,访问外接RAM可执行如下4条指令: MOVX A,@DPTR MOVX @DPTR,A MOVX A,@RI MOVX @RI,A 其中DPTR为16位地址寄存器,地址高8位存于DPH,地址低8位存于DPL;Ri(I=0,1)是8位寄存器,作为地址指针时仅存低8位地址。 MCS-51执行上述指令时分为两个阶段:首先,是从外接程序存储器中取出指令代码,并进行分析。然后,执行对外接RAM的数据读/写操作。在这两个阶段,P0口、P1口上的地址选通是有区别的。 执行“MOVX A,@DPTR”和“MOVX @DPTR,A”指令时,在读指令代码阶段,由程序计数器(PC)提供A0
[单片机]
如何优化C语言(单片机) ?
1、选择合适的算法和数据结构 应该熟悉算法语言,知道各种算法的优缺点,具体资料请参见相应的参考资料,有很多计算机书籍上都有介绍。将比较慢的顺序查找法用较快的二分查找或乱序查找法代替,插入排序或冒泡排序法用快速排序、合并排序或根排序代替,都可以大大提高程序执行的效率。.选择一种合适的数据结构也很重要,比如你在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。 数组与指针语句具有十分密码的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高。但是在Keil中则相反,使用数组比使用的指针生成的代码更短。 2、使用尽量小的数据类型 能够使用
[单片机]
单片机学习的过程
单片机学习的过程应该是一个循序渐进、不断学习、不断积累的过程,可以分为三个阶段。 第一阶段:掌握开发单片机的必备基础知识。首先是熟练掌握单片机的基本原理,其实各家各门的单片机其基本结构和原理都差不多,特别是共有的知识需要好好理解和掌握。例如,内核结构、内存分配、中断处理、定时计数、串行通信、端口复用等一些最基本的概念和原理。除此之外,我们还需要具备模拟电子、数字电子、C语言程序开发知识以及原理图和PCB设计等一些技能。在进行系统开发的时候,进行原理设计、PCB布板、程序编写、系统联调这些工作都是在所难免的。 第二阶段:在掌握好一款单片机原理和应用的基础上,开始学习其他各家单片机的独有技术,学不了那么多也要多了解了解。同时尽可
[单片机]
STC12C5A60S2单片机产生SPWM主程序C代码
本程序通过模拟仿真,实际示波器测试,均表现良好,愿拿出来分享,若有更好的实现方法,希望高手多多指教。。。。 /*************spwm产生程序******/ /*单片机STC12C5A60S2,晶振11.0592M,正弦波50Hz,spwm波形21.6KHz*/ #include STC12x5A60S2.H #define uchar unsigned char #define uint unsigned int uchar code pwm ={255,240,226,211,196,182,168,154,141,128,115,103,91 ,80,69,59,50,42,34,27,20,15,10,6,3,1
[单片机]
单片机系统中的多任务多线程机制的实现
摘要:单片机系统的开发多情况下不是在嵌入式操作系统平台上进行的,而是直接基于处理器编写。在多任务并行执行的要求下,可以借鉴操作系统中的任务和线程机制,对资源和处理器合理进行调度。本文以实例对此进行讨论。 关键词:单片机 任务 线程 并行处理 引言 首先要指出的是一点是,我们不是讨论嵌入式实时多任务操作系统(RTOS)的设计。我们讨论的是,在不使用RTOS的控制系统中,如何体现多任务多线程机制的程序设计思想。 一些嵌入式设备可以需要操作系统,例如掌上电脑、PDA、网络控制器等高性能的手持设备和移动设备。它们往往和无线通信、互联网访问和多媒体处理等复杂而强大的功能联系在一起;对CPU要求也很高,往往是以通用CPU为原型的各种高
[应用]
瑞萨电子现已将“Renesas Ready合作伙伴网络”覆盖全部MCU和MPU产品线
瑞萨电子现已将“Renesas Ready合作伙伴网络”覆盖全部MCU和MPU产品线 在增加了对RZ MPU的支持之后,该计划现可提供来自200多个受信合作伙伴的软件组件,涵盖广泛的技术领域 2022 年 11 月 8 日,中国北京讯 - 全球半导体解决方案供应商瑞萨电子 今日宣布, 为其RZ产品家族微处理器(MPU)提供商业级、性能优化的组件——其中包括106个新合作伙伴和160个组件解决方案,进一步扩大“Renesas Ready合作伙伴网络”。 在过去三年中,这一受信技术合作伙伴计划已发展至超过200个合作伙伴的规模,共同打造了300多款与瑞萨RZ MPU,以及RA、RX和RL78微控制器(MCU)产品线相配套的即用
[嵌入式]
瑞萨电子现已将“Renesas Ready合作伙伴网络”覆盖全部<font color='red'>MCU</font>和MPU产品线
51单片机定时器使用时非常重要的6点经验详细的总结
单片机定时器的使用可以说非常简单,只要掌握原理,有一点的C语言基础就行了。要点有以下几个: 1. 一定要知道英文缩写的原形,这样寄存器的名字就不用记了。 理解是最好的记忆方法。好的教材一定会给出所有英文缩写的原形。 2. 尽量用形像的方法记忆。 比如TCON和TMOD两个寄存器各位上的功能,教程一般有个图表,你就在学习中不断回忆那个图表的形像。 3. TMOD:定时器/计数器模式控制寄存器(TIMER/COUNTER MODE CONTROL REGISTER) 定时器/计数器模式控制寄存器TMOD是一个逐位定义的8位寄存器,但只能使用字节寻址,其字节地址为89H。其格式为:其中低四位定义定时器/计数器C/T0,高四位定义定时器/
[单片机]
51<font color='red'>单片机</font>定时器使用时非常重要的6点经验详细的总结
双核单片机红外遥控码代码
一个用应广双核单片机做的红外遮挡开光(反射式)全部代码。 IR_SW equ pb.1 IR_INPUT equ pa.0 IR_OUTPUT equ pa.6 byte ir_new byte ir_old byte ir_enable byte i byte ir_new1 byte ir_new2 byte ir_new3 goto main0 goto main1 //----------------FPPA0------------------- main0: .ADJUST_OTP_IHRCR 8MIPS // IHRC/2 = 8MIPS, WatchDog Disable, RAM 0,1 temporary b
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

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

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

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