×
单片机 > 单片机程序设计 > 详情

51单片机串口通信试验汇编程序

发布时间:2020-06-22 发布时间:
|
(今天是硬生生的把它给抠出来了):PC 通过串口助手向单片机系统传递命令和数据:以A5开始,以5A结束;中间是数据,长度不一,要求把数据部分用led灯显示出来;并且要求循环显示;

//This is  my x_Ed program code
//we use it as the pc communicated with the mcu
//At the same time,we want to see the result by LCD; 
     STFLAG BIT 00H //收到起始码标志,1为收到起始码
     EDFLAG BIT 01H //到结束码标志,1为收到结束码
     TMFLAG BIT 02H //定时时间到标志,1为定时时间到
  ORG 0000H
  SJMP Initialize//主程序入口 (初始化程序)
  ORG 000BH   //定时器0入口
     LJMP TIMER0   //定时器0中断
  ORG 0023H     //串口中断程序的入口地址
  LJMP Transfer //跳转到接受中断入口
///////////////////////////////////////////////////////////////
     ORG 0050H
Initialize:
     MOV SP,#70H    //设置堆栈
  MOV TMOD,#21H  //T1工作方式2  T0工作
  MOV TH1,#0FDH  //波特率9600
  MOV TL1,#0FDH  //波特率9600 自动重装载
  MOV TH0,#3CH   //定时50ms
     MOV TL0,#0BH   //定时50ms
  MOV SCON,#50H  //串口工作方式1
     MOV R6,#00H    //定时次数计数器20一秒
     MOV R5,#00H    //接收数据长度计数器
     MOV R4,#00H    //控制输出控制寄存器
     MOV R0,#30H    //数据存储地址
     MOV R1,#30H    //控制输出的数据缓存
     CLR STFLAG     //清起始标志位
     CLR EDFLAG    //清结束标志位
     CLR TMFLAG    //清时钟标志位
     SETB PS        //提高串口中断的优先级
     SETB TR1       //打开定时器1;
     SETB ES        //打开串口中断允许位
     SETB ET0    //定时器0中断允许位
     SETB EA     //打开全局中断允许位
/////////////////等待接受命令////////////////////////
Main:   JB STFLAG,NODE3  //已经收到起始位
        SJMP Main        //未起始继续等待
NODE3:  JB EDFLAG,NODE4  //已经收到结束位
        SJMP Main        //未结束继续等待
NODE4:  SETB TR0      //打开定时器0;
NODE5:  JB TMFLAG,OUTPUT
  SJMP NODE5         
 ///////////////////等待上位机传送数据并记录////////
Transfer: CLR ES
          MOV A,SBUF
    CJNE A,#0A5H,NODE0  //检测到起始位
    SETB STFLAG
    SJMP JIEDIAN
NODE0:    CJNE A,#05AH,NODE1   //检测到结束位
          SETB EDFLAG
    MOV  DPH,R5
    MOV  R4,DPH
    clr ES        //打开串口中断允许位
    SJMP ret00
NODE1:   MOV @R0,A    //既非起始码,又非结束码,则为数据
          INC R0
          INC R5
    MOV SBUF,#055H  
JIEDIAN:  CLR TI
    CLR RI
          SETB ES
ret00:    RETI
TIMER0: CLR TR0
        MOV TH0,#3CH
        MOV TL0,#0B0H
        INC R6
        CJNE R6,#20,RTN
        SETB TMFLAG
        MOV R6,#00H
RTN:    SETB TR0
     RETI

OUTPUT: CLR TR0
        clr TMFLAG
        MOV A,@R1
        MOV P1,A
        INC R1
        DJNZ R4,NODE4
        MOV R1,#30H
  CLR TMFLAG
  MOV DPH,R5
  MOV R4,DPH
  SJMP NODE4
  RETI
END

关键字:51单片机  串口通信  汇编程序 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
MSP430F5529 上手小例程2