单片机实验报告 单片机实验报告怎么写

时间:2023-08-15 16:23:22 文档下载 投诉 投稿

      单片机实验报告

          院:    名:        号:   

      指导老师: 

      
   

      

        二、目的及要求……………………………………………………3

      提高部分:定时器控制LED

      由单片机内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟T1溢出中断一次。P1口的P1.0-P1.7分别接八个发光二极管。编写程序模拟时序控制装置。开机后P64)和“4.4 D/A转换实验”项目。

      提高部分:(要求:Proteus环境下完成)

      小键盘给定(并显示工作状态),选择信号源输出波形类型(D/A转换方式),经过A/D采样后,将采样数据用LED灯,显示当前模拟信号值大小及变化状态。

      实验四 串行通讯实验

      阅读、调试C语言程序功能。使用汇编语言编程,完成实验指导书之“3.7 串口通讯实验”项目。(要求:实验仪器上完成)

      提高部分:(要求:Proteus环境下完成)

      利用单片机实验系统,实现与PC机通讯。功能要求:将从实验系统键盘上键入的数字,字母显示到PC机显示器上,将PC机键盘输入的字符(0-F)显示到单片机实验系统的数码管上。

      二、目的及要求

      1、学习Keil C51集成开发工具的操作及调试程序的方法,包括:仿真调试与脱机运行间的切换方法;

      2、熟悉TD-51单片机系统板及实验系统的结构及使用;

      3、进行MCS51单片机指令系统软件编程设计与硬件接口功能设计;

      4、学习并掌握Keil C51Proteus仿真软件联机进行单片机接口电路的设计与编程调试;完成指MCS51单片机综合设计题。

      三、实验步骤     

      实验参考程序及实验步骤如下。

      实验参考程序:(DigitIO.C

      #include "SST89x5x4.H"

      void main(void)

      {

      unsigned char data i; //data 为存储器类型说明

      while(1)

      {

      P1 = P1 | 0xF0; //声明高4 位为输入

      i = P1; P1 = (i>>4)&0x0F;

      }

      }

      汇编:

       ORL      P1(0x90),#B(0xF0)

       MOV      0x08,P1(0x90)

       MOV      A,0x08

       SWAP    A

       ANL      A,#0x0F

       MOV      R7,A

       MOV      A,R7 ANL      A,#0x0F

       MOV      P1(0x90),A

       SJMP    main(C:0800)

      实验步骤:

      1. 按图3-1-1 所示, 连接实验电路图,图中 “圆圈”

      示需要通过排线连接;

      2. 编写实验程序,编译链接无误后进入调试状态; 

      3. 运行实验程序, 观察实验现象,验证程序正确性; 

      4. 按复位按键,结束程序运行,退出调试状态; 5. 自行设计实验,验证单片机其它IO 口的使用。                                   

      实验接线图:

      实验二  定时器/计数器实验

      一、实验目的     

      1. 了解MCS-51 单片机定/计数器的工作原理与工作方式; 2. 掌握定时/计数器T0 T1 在定时器和计数器两种方式下的编程;

      3. 学习定时/计数器T2 的可编程时钟输出功能。

      二、实验内容

      1. 使用定时器0 与定时器1 进行定时,在P1.0 P1.1 引脚上输出方波信号,通过示波器观察波形输出,测量并记录方波周期。

      2. 将定时/计数器1 设定为计数器方式,每次计数到10 P1.0 引脚上取反一次,观察发光二极管的状态变化。

      3. 定时器2 可以作为时钟发生器使用,并在P1.0 引脚上输出占空比为50%的方波。编程定时器2,使用示波器测量输出时钟,测量时钟周期。 三、实验原理

      通常,8051 单片机内部有2 16 位定时/计数器,即定时器0T0)和定时器1T1)。增强型单片机SST89E554RC 内部还有一个16 位定时器T2,与其相关的特殊功能寄存器有TL2TH2RCAP2LRCAP2HT2CON 等。

      定时器/计数器/特殊功能寄存器

      定时器/计数器2 控制寄存器(T2CON)各位的含义简述如下: TF2:定时器溢出标志,当定时器溢出时置位,必须由软件清除。当RCLK1 TCLK1时此位将不会被置位。

      EXF2:定时器2 外部标志,当EXEN21 并且T2EX 引脚上出现负跳变引起捕捉或重载发生时此位置1。如果定时器2 中断使能,EXF21 会引起中断,此位必须软件清除。DCEN1时,EXF2 不会引起中断。

      RCLK:接收时钟标志,RCLK1,串行口使用T2 的溢出脉冲作为方式1 3 下的接收时钟;

      RCLK0,串行口使用T1 的溢出脉冲作为接收时钟。

      TCLK:发送时钟标志,与RCLK 的作用相同。

      EXEN2:定时器2 外部使能标志。EXEN21 T2 未被用于串口时钟时,若T2EX 引脚上出现负跳变则出现捕捉或重载。EXEN20 时,T2 忽略T2EX 引脚上的变化。

      TR2:启动/停止定时器2,为1 时启动定时器2

      C/T2#:定时器/计数器选择。C/T2#=1 为计数功能;C/T2#=0 为定时功能。

      CP/RL2#:捕捉/重载标志。CP/RL2#=1,当EXEN21 T2EX 引脚上出现负跳变时捕捉发生。CP/RL2#=0T2 溢出时重载发生,或当EXEN21 T2EX 引脚上出现负跳变时重载发生。如果RCLK1 TCLK1,此位会被忽略,T2 溢出时自动重载。

      定时器/计数器2 模式寄存器(T2MOD)各位的含义简述如下:

      T2OE:定时器2 输出使能位。

      DCEN:递减计数使能位。

      四、实验步骤     

      定时器实验

      按照实验要求编写实验程序,参考例程如下:(Timer.C

      #include "SST89x5x4.h"

      sbit Wave1 = P1^0;

      sbit Wave2 = P1^1;

      void main()

      {

      TMOD = 0x11; //定时器方式寄存器

      TH0 = 0x0F8; //定时器0 计数初值

      TL0 = 0x00;

      TH1 = 0x0F8; //定时器1 计数初值

      TL1 = 0x00;

      TR0 = 1; //启动定时器0

      TR1 = 1; //启动定时器1

      while(1)

      { if(TF0 == 1) //定时器0 溢出标志

      {

      TH0 = 0x0F8;

      TL0 = 0x00;

      Wave1 = ~Wave1;

      TF0 = 0;

      }

      else if(TF1 == 1) //定时器1 溢出标志

      {

      TH1 = 0x0F8;

      TL1 = 0x00; Wave2 = ~Wave2;

      TF1 = 0;

      }

      }

      }

      汇编:

        MOV      TMOD(0x89),#0x11

        MOV      TH0(0x8C),#IPA(0xF8)

        CLR      A

        MOV      TL0(0x8A),A

        MOV      TH1(0x8D),#IPA(0xF8)  MOV      TL1(0x8B),A

        SETB    TR0(0x88.4)

        SETB    TR1(0x88.6)

        JNB      TF0(0x88.5),C:0821

        MOV      TH0(0x8C),#IPA(0xF8)

        CLR      A

        MOV      TL0(0x8A),A

        CPL      Wave1(0x90.0)

        CLR      TF0(0x88.5)

        SJMP    C:0812

        JNB      TF1(0x88.7),C:0812  MOV      TH1(0x8D),#IPA(0xF8)

        CLR      A

        MOV      TL1(0x8B),A

        CPL      Wave2(0x90.1)

        CLR      TF1(0x88.7)  SJMP    C:0812

        MOV      R0,#0x7F

        CLR      A

        MOV      @R0,A

        DJNZ    R0,C:0833

        MOV      SP(0x81),#0x07

        LJMP    main(C:0800)

      实验步骤:

      1)编写实验程序,编译、链接后联机调试;

      2)运行实验程序,使用示波器观察P1.0 P1.1 引脚上的波形并记录周期; 3)改变计数初值,观察实验现象,验证程序功能。

      计数器实验

      实验参考例程:(Count.C

      #include "SST89x5x4.h"

      sbit P10Value = P1^0;

      void main()

      {

      TMOD = 0x60; //设定定时器1 计数方式

      TH1 = 0xF6; //计数初值

      TL1 = 0xF6; TR1 = 1; //启动定时器1

      for(;;)

      {

      while(TF1 == 0); //判定时器1 溢出标志

      P10Value = ~P10Value;

      TF1 = 0;

      }

      }

      实验步骤:

      1)按下图连接实验线路图;

      2)编写程序,联机调试; 3)运行实验程序,按单次脉冲KK1,观察发光

      D0 的状态,每10 次变化一次;

      4)实验结束,按复位按键退出调试。

      五、定时器控制LED

      要求:由单片机内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟T1溢出中断一次。P1口的P1.0-P1.7分别接八个发光二极管。编写程序模拟时序控制装置。开机后2)程序如下:

      #include<reg51.h>

      unsigned char count;

      void main()

      {    unsigned char value, i;

          TMOD=0x01;

        TH0=0x4C;

        TL0=0x00;

        ET0=1;

          PT0=1;

        EA=1;

        TR0=1;

          while(1)

        {  if( count==20)

            P1=05H;      if (count==40)

            P1=0AH;

            if (count==60)

            P1=50H;

            if (count==80)

            P1=0A0H;

            if (count==100)

            P1=55H;

            if (count==120)

            P1=0AAH;

            if (count==140)      P1=0FFH;

            if (count==160)

            P1=00H;

            count=0;

          }

      }

      void Timer0()interrupt 1

      {

          TR0=0;

        TH0=0x4C;

        TL0=0x00;    TR0=1;

          count++;

      }

      实验三  /D、D/A转换实验

      一、 A/D转换实验

      1)实验目的     

      1. 学习理解模/数信号转换的基本原理;

      2. 掌握模/数转换芯片ADC0809 的使用方法。

      2)实验内容     

      编写实验程序,将ADC 单元中提供的0V5V 信号源作为ADC0809 的模拟输入量,进行A/D 换,转换结果通过变量进行显示。

      3)实验原理     

      ADC0809 包括一个8 位的逐次逼近型的ADC 部分, 并提供一个8 通道的模拟多路开关和联合寻址逻辑。用它可直接输入8 个单端的模拟信号,分时进行A/D 转换,在多点巡回检测、过程控制等应用领域中使用非常广泛。ADC0809 的主要技术指标为:

      · 分辨率:8

      · 单电源:+5V

      · 总的不可调误差:±1LSB

      · 转换时间:取决于时钟频率

      · 模拟输入范围:单极性 05V

      · 时钟频率范围:10KHz1280KHz

      ADC0809 的外部管脚如下图所示,地址信号与选中通道 的关系如表1 所示。

      1实验程序清单(AD0809.C     

      #include "SST89x5x4.h"

      #include "Absacc.h"

      #define STARTAD XBYTE[0x7F00]

      #define ADRESULT XBYTE[0x7F08]

      sbit ADBUSY = P3^3;

      void Delay()

      {

      unsigned char i;

      for(i=0; i<100; i++);

      } unsigned char AD0809(void)

      {

      unsigned char result;

      STARTAD = 0;                        //启动AD

      while(ADBUSY == 1);                //等待转换结束

      Delay();

      result = ADRESULT;

      return result;                    //返回转换结果

      }

      void main(void)

      { unsigned char ADV;                //变量

      while(1)

      {

      ADV = AD0809();

      Delay();                          //设置断点

      }

      }

      汇编:

                      AD0809:

        MOV      DPTR,#0x7F00

        CLR      A  MOVX    @DPTR,A

        JB      ADBUSY(0xB0.3),C:0805

        LCALL    Delay(C:0827)

        MOV      DPTR,#0x7F08

        MOVX    A,@DPTR

        MOV      R7,A

        RET     

        MOV      R0,#0x7F

        CLR      A

        MOV      @R0,A

        DJNZ    R0,C:0814  MOV      SP(0x81),#0x08

        LJMP    main(C:081D)

                      main:

       LCALL    AD0809(C:0800)

       MOV      0x08,R7

       LCALL    Delay(C:0827)

       SJMP    main(C:081D)

                      Delay:

       CLR      A

       MOV      R7,A

       INC      R7 CJNE    R7,#0x64,C:0829

      1. 按图4-3-2 连接实验线路,AD 的时钟线需要与实验平台中的系统总线单元的CLK 相连;

      2. 编写实验程序,经编译、链接无误后装入系统,启动调试;

      3. 将变量ADV 添加到变量监视窗口中;

      4. Delay()语句行设置断点,使用万用表测量ADJ 端的电压值,计算对应的采样值,然后运

      行程序;

      5. 程序运行到断点处停止运行,查看变量窗口中ADV 的值,与计算的理论值进行比较,看是否

      一致(可能稍有误差,相差不大); 6. 调节电位器,改变输入电压,比较ADV 与计算值,反复验证程序功能;制表并记录结果。

      二、 D/A转换实验

      1)实验目的 

      1.学习数/模转换的基本原理; 

      2.掌握DAC0832 的使用方法。 

      2)实验内容 

      设计实验电路图实验线路并编写程序,实现D/A 转换,要求产生锯齿波、脉冲波,并用示波器观察电压波形。 

      3)实验原理 

      D/A 转换器是一种将数字量转换成模拟量的器件,其特点是:接收、保持和转换的数字信息,不存在随温度、时间漂移的问题,其电路抗干扰性较好。大多数的D/A 转换器接口设计主要围绕D/A  集成芯片的使用及配置响应的外围电路。 DAC08328位芯片,采用CMOS 工艺和R-2RT 形电阻解码网络,转换WR1结果为一对差动电流Iout1 Iout2 输出,其主要性能参数如表4-4-1 示,引脚如图4-4-1 所示。4)实验步骤 

      1. 实验接线图如图4-4-2 所示,按图接线; 

      2. 编写实验程序,经编译、链接无误后装入系统,启动调试; 

      3. 运行程序,用示波器测量DA 的输出,观察实验现象; 

      4. 自行编写实验程序,产生三角波形,使用示波器观察输出,验证程序功能。

      实验程序清单: DA0832.C 

      #include <Absacc.h>

      #define DA XBYTE[0x7FFF] void main(void)

      {

      unsigned int i;

      while(1)

      {

      for(i=0; i<255; i++)

      DA = i; //DA

      }

      }

      汇编:

       CLR      A MOV      R7,A

       MOV      R6,A

       MOV      DPTR,#0x7FFF

       MOV      A,R7

       MOVX    @DPTR,A

       INC      R7

       CJNE    R7,#0x00,C:080D

       INC      R6

       MOV      A,R7

       CPL      A

       ORL      A,R6 JNZ      C:0803

       SJMP    main(C:0800)

       MOV      R0,#0x7F

       CLR      A

       MOV      @R0,A

       DJNZ    R0,C:0817

       MOV      SP(0x81),#0x07

       LJMP    main(C:0800)

      三、扩展

      要求:Proteus环境下完成小键盘给定(并显示工作状态),选择信号源输出波形类型(D/A换方式),经过A/D采样后,将采样数据用LED灯,显示当前模拟信号值大小及变化状态。

      1)硬件构造如下:

      2)程序如下:

      PRO_DA      EQU  7FFFH

      PRO_AD  EQU  0BFFFH

                    ORG    0000H

                    SJMP  MAIN

                    ORG    001BH              LJMP  KEYSCAN

                    ORG    0030H

      MAIN:        SETB  EA

                    SETB  EX1

                    SETB  IT1

                    MOV    P1,#0FH

                    MOV    R5,#0FFH

      TEST:        MOV    R5,#03H

                    CJNE  R5,#01H,L1

                    LCALL  SQUARE

                    AJMP  TESTL1:          CJNE  R5,#02H,L2

                    LCALL  TRIANGLE

                    AJMP  TEST

      L2:          CJNE  R5,#03H,L3

                    LCALL  SAWTOOTH

      L3:          AJMP  TEST

           

      ;键盘扫描中断

      KEYSCAN:    ACALL T12MS

                      ;MOV  R6,A

                      ACALL SCAN            JNZ  KEY1

                  SJMP  EXIT

      KEY1:          MOV R2,A

                    MOV R3,#07FH

                  MOV R4,#03H

      LOOP1:        MOV P1,R3

                    MOV A,P1

                    CPL A

                  ANL A,#0FH

                    JNZ KEY2

                    MOV A,R3              RR  A

                    MOV R3,A

                    DJNZ R4,LOOP1

                    SJMP EXIT

      KEY2:          DEC R4

                    CJNE R2,#01H,LOOP3

                    MOV  A,#01H

                  SJMP LOOP6

      LOOP3:    CJNE R2,#02H,LOOP4

                    MOV  A,#04H

                    SJMP LOOP6LOOP4:        CJNE R2,#04H,LOOP5

                    MOV  A,#07H

                  SJMP LOOP6

      LOOP5:        CJNE  R2,#08H,LOOP6

                    MOV  A,#0AH

      LOOP6:        ADD  A,R4

                  MOV  R5,A

                  MOV  P1,#0FH

                  ;MOV  A,R6

      EXIT: RETI

       ;延时后再次扫描有无按键按下    SCAN: MOV P1,#0FH

            MOV A,P1

            CPL A

            ANL A,#0FH

            RET

      T12MS:MOV R7,#15H    ;12MS

      TM:  MOV R6,#0FFH

            DJNZ R6,$

            DJNZ R7,TM

            RET

      

       ;D/A产生方波   

      SQUARE: MOV DPTR,#PRO_DA

            MOV A,#0FFH

            MOVX @DPTR,A

            MOV  DPTR,#0BFFFH

            MOVX @DPTR,A 

            ACALL DELAY

            MOV A,#00H

            MOV DPTR,#PRO_DA

            MOVX @DPTR,A

            MOV  DPTR,#0BFFFH      MOVX @DPTR,A

            ACALL DELAY

            RET

      DELAY:MOV R0,#27H   

      DEL1: MOV R1,#0FFH

            DJNZ R1,$

            DJNZ R0,DEL1

            RET

       ;D/A产生三角波 时钟500KHz 幅值1mv 扫描周期20ms

      TRIANGLE:MOV A,#00HTLOOP:MOV DPTR,#PRO_DA

            MOVX @DPTR,A

            MOV  DPTR,#PRO_AD

            MOVX @DPTR,A

            CJNE A,#0FFH,TLOOP2

      COUNT1:DEC A

            MOV  DPTR,#PRO_DA

            MOVX @DPTR,A

            MOV  DPTR,#PRO_AD

            MOVX @DPTR,A

            CJNE A,#00H,COUNT1      SJMP EXIT1

      TLOOP2:INC A

            AJMP TLOOP

      EXIT1:RET     

      ;D/A产生锯齿波

      SAWTOOTH: MOV A,#00H

      SLOOP:MOV DPTR,#PRO_DA

            MOVX @DPTR,A

            MOV  DPTR,#PRO_AD

            MOVX @DPTR,A

            INC A      CJNE A,#00H,SLOOP

            RET

            END

      实验四  串行通信设计

      一、实验目的     

      1. 学习MCS-51 单片机串口的工作原理及程序设计;

      2. 了解使用SSTEasyIAP11F.EXE 软件实现程序脱机运行的方法;

      3. 熟悉启动加载代码与SoftICE 相互切换的方法。

      二、实验原理      MCS-51 单片机内部的全双工串行接口部分,包含有串行接收器和串行发送器。有两个物理上独立的接收缓冲器和发送缓冲器。接收缓冲器只能读出接收的数据,但不能写入。发送缓冲器只能写入发送的数据,但不能读出。因此可以同时收、发数据,实现全双工通讯。两个缓冲器是特殊功能寄存器SBUF,它们公用地址为99HSBUF 是不可位寻址的。此外,还有两个寄存器SCON PCON 分别用于控制串行口的工作方式以及波特率,定时器T1 可以用作波特率发生器 SST89E554RC 提供了增强型全双工串行接口,具有帧错误检测和自动地址识别的功能。 由于SST89E554RC 的串口用作调试目的,所以Keil C51 软件提供了串口模拟窗口,可以借助此窗口调试串口通讯程序。也可以将程序编译生成目标代码(.HEX),脱机运行。 三、实验内容     

      编写实验程序,每隔一定的时间单片机向串口发送一次数据“Xian Tangdu Corp.”。

      四、实验步骤     

      实验参考程序:(Serial.C

      #include "REG51.h"

      #include "stdio.h"

      /**********************************************************

      * 函数原型: void Init_Serial(void)                       

      * 函数描述: 初始化串口,晶振为11.0592MHz,波特率为19200bps *

      ***********************************************************

      void Init_Serial(void)

      {

      SCON = 0x50;                  // 串口工作方式1

      TMOD = (TMOD&0x0F)|0x20;      // 选择定时器1 方式2

      PCON = 0x80;                  // 波特率倍增

      TH1 = 0xFD;                  // 计数初值, 19200bps

      TR1 = 1;                      // 启动定时器1

      ES = 0;

      } void delay(void)

      {

      unsigned int i;

      for(i=0; i<35000; i++);

      }

      void main(void) //====== 主程序 ======//

      {

      Init_Serial();

      SBUF=0x00;

      while(1)

      { printf("Xi'an Tangdu Corp.\n");

      delay();

      }

      }

      汇编:

       LCALL    Init_Serial(C:0C41)

       CLR      A

       MOV      SBUF(0x99),A

       MOV      R3,#0xFF

       MOV      R2,#0x0C

       MOV      R1,#0x6B LCALL    PRINTF(C:0862)

       LCALL    delay(C:0C27)

       SJMP    C:0C5D

       ANL      A,R0

       XRL      A,R1

       ADD      A,@R1

       AJMP    C:0B6E

       JB      0x2A.4,C:0CD4

       XRL      A,R6

       XRL      A,@R1

       XRL      A,#0x75 JB      0x28.3,C:0CE9

       ORL      C,0x2E.0

       ADD      A,R6

       INC      R2

       NOP     

       MOV      R0,#0x7F

       CLR      A

       MOV      @R0,A

       DJNZ    R0,C:0C82

       MOV      SP(0x81),#0x21

       LJMP    main(C:0C57)实验步骤:

      1)串口通讯实验电路如图3-7-1 所示;

      2)编写实验程序,经编译、链接无误后启动调试;

      3)进入调试界面,点击命令,打开串口1 监视窗口;

      4)运行实验程序,观察此时有如图3-7-2 所示输出;

      5)阅读1.7 节的内容,首先将系统程序由SoftICE 切换到启动加载程序;

      6)将编译生成的Hex 文件通过SSTEasyIAP11F.EXE 软件下载到单片机内部Flash 中; 7)复位单片机,打开超级终端或串口调试软件,将端口号及波特率等设置好,观察PC

      示,如图3-7-3 和图3-7-4 所示;

      8)实验结束,重新将SoftICE 下载到单片机系统区替换启动加载程序。

五、扩展

      1)流程图                              写数据                                    读数据

      2)硬件如下:3)程序如下:ORG 0000H

      AJMP MAIN

      ORG 0023H

      AJMP  URT

      ORG 0030H

      MAIN:mov p1,#00h

      LCALL URTINIT

      START:MOV P0,#0FH

      MOV A,P0

      CPL A

      ANL A,#0FHJZ  START

      LCALL DELAY

      MOV P0,#0FH

      MOV A,P0

      ANL A,#0FH

      MOV R7,A

      MOV P0,#0F0H

      MOV A,P0

      ANL A,#0F0H

      ORL A,R7

      CJNE A,#0EEH,K1MOV A,#30H

      MOV SBUF,A

      JNB TI,$

      CLR TI

      K1:CJNE A,#0DEH,K2

      MOV A,#31H

      MOV SBUF,A

      JNB TI,$

      CLR TI

      K2:CJNE A,#0BEH,K3

      MOV A,#32HMOV SBUF,A

      JNB TI,$

      CLR TI

      K3:CJNE A,#7EH,K4

      MOV A,#33H

      MOV SBUF,A

      JNB TI,$

      CLR TI

      K4:CJNE A,#0EDH,K5

      MOV A,#34H

      MOV SBUF,AJNB TI,$

      CLR TI

      K5:CJNE A,#0DDH,K6

      MOV A,#35H

      MOV SBUF,A

      JNB TI,$

      CLR TI

      K6:CJNE A,#0BDH,K7

      MOV A,#36H

      MOV SBUF,A

      JNB TI,$CLR TI

      K7:CJNE A,#7DH,K8

      MOV A,#37H

      MOV SBUF,A

      JNB TI,$

      CLR TI

      K8:CJNE A,#0EBH,K9

      MOV A,#38H

      MOV SBUF,A

      JNB TI,$

      CLR TIK9:CJNE A,#0DBH,KA

      MOV A,#39H

      MOV SBUF,A

      JNB TI,$

      CLR TI

      KA:CJNE A,#0BBH,KB

      MOV A,#41H

      MOV SBUF,A

      JNB TI,$

      CLR TI

      KB:CJNE A,#7BH,KCMOV A,#42H

      MOV SBUF,A

      JNB TI,$

      CLR TI

      KC:CJNE A,#0E7H,KD

      MOV A,#43H

      MOV SBUF,A

      JNB TI,$

      CLR TI

      KD:CJNE A,#0D7H,KE

      MOV A,#44HMOV SBUF,A

      JNB TI,$

      CLR TI

      KE:CJNE A,#0B7H,KF

      MOV A,#45H

      MOV SBUF,A

      JNB TI,$

      CLR TI

      KF:CJNE A,#77H,K0

      MOV A,#46H

      MOV SBUF,AJNB TI,$

      CLR TI

      K0:

      LJMP START

      URTINIT:

      MOV SCON,#50H  ;设置成串口工作方式在8URT

      MOV TMOD,#20H  ;设置T1为可重装8位定时器

      MOV TL1,#0FDH  ;256-FOSC/BTL/32/12

      MOV TH1,#0FDH

      SETB TR1  ;开启定时器SETB ES    ;开启串口中断

      SETB EA    ;开总中断

      RET

      URT:

      clr c

      MOV A,SBUF ;接收到数据后将数据返回

      mov p1,a

      next1:CLR RI ;清接收中断标志

      RETI

      DELAY:    MOV    R6,#0ffh

      DEL1:    MOV    R5,#0ffh    DJNZ    R5,$

          DJNZ    R6,DEL1

          RET

      END

      

【单片机实验报告 单片机实验报告怎么写】相关文章:

CAD实验报告怎么写 cad实验报告怎么写出来08-15

cadcam实验报告 cadcam实训报告08-15

计算机辅助设计CAD-实验报告 道路工程计算机辅助设计实验报告08-15

工程制图CAD实验报告 制图cad实训报告08-15

工作报告之大学单片机实验报告 石家庄铁道大学单片机实验报告08-15

单片机课程设计实验报告 单片机实验课实验报告08-15

单片机实验报告 单片机实验报告怎么写08-15

单片机实验报告 单片机实验报告keil软件的使用08-15

安徽大学历次单片机实验报告 安徽工业大学单片机实验报告08-15

2023电子商务运营实习报告范文08-15

电子商务的实习报告三篇08-15

电商运营助理实习报告08-15

食品饮料行业电子商务实习报告08-15