单片机实训报告

信息工程学院实训报告

实训题目:乐联网远程采集系统

 

学生姓名: 刘霞

学    号:1267106332

专    业: 自动化

班    级: 12级3班

指导教师:李琦、陈波


目录

实训任务书... II

乐联网远程采集系统... 1

一、实训目的... 1

二、实训要求... 1

三、实验原理... 1

四、电路接线... 2

五、实验步骤... 2

(1)实验步骤... 2

(2)运行结果... 3

六、实验程序... 4

七、实训心得... 11

参考文献... 12

实训任务书


乐联网远程采集系统

一、实训目的

⑴掌握MCS-51串行口工作方式及其通信程序设计方法。

⑵掌握RS-232串行总线通信原理及单片机与PC机通信方法。

(3)掌握LED数码管电路(LCD显示模块)的软硬件设计方法。

(4)掌握单总线数字温度传感器驱动软件设计。

(5)掌握乐联网物联网数据上传方法。

二、实训要求

⑴单片机通过AD采集模块采集电位器输出的电压信号,保留2位小数;

⑵将采集到的数据显示在4位LED数码管或LCD液晶显示器上;

(3)注册乐联网账号,获取key,下载串口数据上传工具软件;

(4)通过串口将采集到的电压发送到串口数据上传软件,由后者发布到互联网。

三、实验原理

       本实验AD芯片采用TLC549是一个串行8位A/D转换器,它以8位开关电容逐次逼近的方法实现A/D转换。

TCL549工作时序:

(1)将 CS 置低。内部电路在测得 CS 下降沿后,再等待两个内部时钟上升沿和一个下降沿后,然后确认这一变化,最后自动将

前一次转换结果的最高位(D7)位输出到 DATA OUT 端上。

(2) 前四个 I/O CLOCK 周期的下降沿依次移出第 2、 3、 4和第 5 个位(D6、 D5、 D4、 D3), 片上采样保持电路在第 4个 I/O CLOCK

下降沿开始采样模拟输入。

(3)接下来的 3个 I/O CLOCK 周期的下降沿移出第 6、7、8(D2、D1、D0)个转换位。

(4)最后,片上采样保持电路在第 8个 I/O CLOCK 周期的下降沿将移出第 6、7、8(D2、D1、D0)个转换位。保持功能将持续 4

个内部时钟周期,然后开始进行 32个内部时钟周期的 A/D 转换。第 8个 I/O CLOCK后,CS 必须为高,戒 I/O CLOCK 保持

低电平,这种状态需要维持 36 个内部系统时钟周期以等待保持和转换工作的完成。如果 CS 为低时 I/O CLOCK 上出现一个

有效干扰脉冲,则微处理器/控制器将不器件的 I/O 时序失去同步;若 CS 为高时出现一次有效低电平,则将使引脚重新初始

化,从而脱离原转换过程。

四、电路接线

REF+:正基准电压输入端(实验接+5V)

CLK=P3^2;   DAT=P3^3;   CS=P3^4;

com2=P3^5;  com3=P3^6;  com4=P3^7;(数码管位选控制端)

电位器:一端接5V,一端接地,ANALOGIN接电位器输出端;

P1口接数码管的字形端。

五、实验步骤

(1)实验步骤

用串口连接线将PC机RS-232与实验箱RS-232相连,调节电位器改变输入电压值,电压值在0—5V内变化,AD芯片进行AD转换,输出数字信号,将输出的数字信号经过所写程序的的变化将其转换成0—5V的电压经过数码管把电压值显示出来(保留两位小数)。同时上传到乐联网上进行查看。

   

(2)运行结果

1.上传界面

2.PC

3.智能手机端

 

 

六、实验程序

#include <reg51.h>

#include <stdio.h>

#include <intrins.h> //本征函数头文件

#include <absacc.h> //绝对地址调用宏定义

#define uchar unsigned char

#define uint unsigned int

#define  FOSC 11059200ul

#define  BAUD 9600

#define  T1_H 256-(FOSC/12/32/BAUD)

#define  T1_L 256-(FOSC/12/32/BAUD)

#define  T0_H 65536-(FOSC*20/(12*1000))/256

#define  T0_L 65536-(FOSC*20/(12*1000))%256

uchar Ucsecond;

uchar Ucsecond1;

uchar flag1;

uchar flag2;

void delay();

float temp;

sbit CLK=P3^2;

sbit DAT=P3^3;

sbit CS=P3^4;

sbit    com2=P3^5;

sbit    com3=P3^6;

sbit    com4=P3^7;

uint i;

uchar    bdata ADCdata;

sbit ADbit=ADCdata^0;

void initsys();

uchar    TLC549ADC(void)

{

       uchar   i;

       CLK=0;      

       DAT=1;

       CS=0;

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

       {

              CLK=1;

              _nop_();

              _nop_();

              ADCdata<<=1;

              ADbit=DAT;

              CLK=0;

              _nop_();             

       }

       return (ADCdata);

}

uchar code zixing[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

uint b3,b2,b1,b0

void main()

{

       uchar i;

       float AD_DATA=100;

       int ad_data;

       TLC549ADC();              

       for(i=0xff;i>0;i--)            

       {

         _nop_();

       }

    AD_DATA=TLC549ADC();     

       initsys();      

       while(1)

       {

            if(flag1==1)

               {

                     flag1=0;

                      AD_DATA=TLC549ADC();

               }

               if(flag2==1)

               {

                     /* flag2=0;

                   SBUF=AD_DATA; //发送模拟信号

                      while(TI==0);

                         TI=0;

                     flag2=0;

                   printf("%1.2f",temp);

                printf("\n");

               }

               temp=(float)AD_DATA*5.0/255.0;

               ad_data=AD_DATA*5.0/255.0*100;

               b0=ad_data%10;

               b1=ad_data%100/10;

               b2=ad_data%1000/100;

               for(i=1;i<4;i++)

      {

              switch(i)

                 {

                    case 1: P1=(zixing[b2]&0x7f); com2=0;com3=1;com4=1;delay();break;

                  case 2: P1=zixing[b1];        com2=1;com3=0;com4=1;delay();break;

                    case 3: P1=zixing[b0];         com2=1;com3=1;com4=0;delay();break;

                 }

          }      

       }

}

void timer0() interrupt 1

{

       TH0=T0_H;

       TL0=T0_L;

       Ucsecond++;

       Ucsecond1++;          

       if(Ucsecond==5)

       {

              flag1=1;

              Ucsecond=0;     

       }

       if(Ucsecond1==100)

       {

              flag2=1;

              Ucsecond1=0;

       }

}

void initsys()  //串口初始化

{

       SCON=0x50;

       TH1=T1_H;

       TL1=T1_L;

       TH0=T0_H;

       TL0=T0_L;

       TMOD=0x01;

       TMOD=(TMOD&0x0f)|0x20;

       EA=1;

       ET0=1;

    ES=0;    

       TR1=1;

       TR0=1;

       TI=1;

}

void delay() //延迟函数

{

 

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

   _nop_();

}

七、实训心得

       这次单片机实训,我们将课本上的知识运用于实践,从选题,到编程,再到后来的老师验收,从中我学到了很多书本上学不到的东西,是我们对这门课有了许多新的了解,弥补了在课堂上学习的不足。也燃起了我对单片机的兴趣。相信这对我们以后的学习和工作都会有很大的帮助。

我的选题是《乐联网数据采集》,由于从来没有接触过和物联网有关的东西所以刚开始的时候几乎是无从下手,后来在编写的过程中又遇到了一个很大的困难,那就是数据传不上乐联网。在网上找资料,找到了乐联网平台实现传感器数据上传教材。后来同学告诉我,乐联网不能用缓冲寄存器SBUF进行传送数据,必须用C语言的printf数据传输(printf("%1.2f",temp);串口的设置和初始化处要保留。就这样从一开始的没有一点头绪,屡试屡败,到后来的成功上传,其中的过程只有亲身体验过才能体会。在试训中有苦有甜,当我们为一个很难攻破的程序找出路时,心情烦躁,感觉自己很不可理喻,当程序一点一点编好后,自己从心底感觉到一点小小的安慰,看着自己的成果。心里无比激动,觉得这些努力终于没有白费,太值了。

这次的实训对于我来说真的是受益匪浅,我深深感受到单片机的强大,同时对自己也有了新的要求。首先,要勇于实践,只有在实践中才知道自己所出的错误在哪,才会知道从哪里解决。第二:遇到问题要学会向他人请教,不能闭门造车,但是决不能完全依靠他人,让他人帮自己做,要经过思考实在找不到解决方法才去问他人,既要学会独立思考又要学会聆听与交流。第三,只要功夫深,铁杵磨成针,尝试了不一定就能成功,但是不尝试永远都不会成功。我们要愈挫愈勇。

参考文献

1.《51系列单片机宝典》电子工业出版社,赵建领著

1.《新概念·51单片机C语言教程》电子工业出版社出版社,郭天祥著,2008

2.《项目驱动—单片机应用设计基础》北京航空航天大学出版社,周立功著2001.7第1版

                                                                         

 

第二篇:单片机原理实验指导书及其程序

单片机原理实验指导书及其程序

实验一 伟福编程软件、编程器、实验箱的使用

一、实验目的

1. 掌握仿真软件、编程器、实验箱的安装、使用方法

2. 学习P1口的使用方法

3. 学习延时子程序的编写和使用

二、实验说明

使用伟福仿真软件Wave6000、编程器、实验箱。

实验时间:3学时。

三、实验内容及步骤

1. 启动计算机,按照软件安装说明安装伟福仿真软件,进入开发环境。

2. 参照开发环境说明,掌握软件的使用。

3. P1.0 P1.1接发光二极管,参照如下结构,使用软件延时方式,编写程序,控制P1.0

以4Hz、P1.0以2Hz的频率闪烁。

4. 使用编程器、单片机开发实验箱,调试程序,观察发光二极管的闪烁。

5. 写实验报告,内容包括电路原理图,汇编程序,延时的计算,心得体会等

四、程序示例

;P1.0输出以某频率方波,P1.1以其1/2频率输出方波

ORG 00H

SJMP MAIN ;跳转到主程序

ORG 30H

MAIN: MOV R0,#02H

FP10: CALL DELAY

CPL P1.0

DJNZ R0, FP10

CPL P1.1

MOV R0,#02H

SJMP FP10

DELAY: MOV R1,#100

DEL1: MOV R2,#50

DJNZ R2,$

NOP

NOP

DJNZ R1,DEL1

RET

END

;思考:在此例中,P1.0、P1.1输出方波的频率究竟是多少?

实验二 程序设计实验

一、实验目的:

⑴ 熟练掌握80C51汇编语言程序设计方法。

⑵ 熟练掌握80C51汇编语言程序的调试方法。

二、实验说明

实验时间:2学时。

三、实验内容:

完成从内部数据存储区20H开始的8个单字节数累加、计算平均程序的设计与调试。累加结果存放在29H(高字节)、2AH(低字节),平均数存放在2BH。

四、实验设备:

PC 机

五、思考:

如何使用软件Wave6000调试所编写的计算程序?

六、实验报告要求

1. 整理好执行正确的程序和数据;

2. 写实验报告,内容包括实验项目、内容,汇编程序及其相应的注释说明,实验完成情况,心得体会。

实验三、流水灯

一、实验目的

1. 掌握伟福软件、编程器、实验箱的使用。

2. 体验I/O口的使用。

3. 掌握软件延时的设计。

二、实验说明

实验时间:3学时。

三、实验内容及要求

实验内容:

(一)使用灌电流方式,P1口外接8个发光二极管。编程序,控制发光二极管按一定的频率(2~5赫兹)循环点亮。

(二)发光二极管按一定的频率(2~5赫兹)向左循环点亮50次后,向右左循环点亮50次后,往复进行。

实验要求:

1.补充完整电路原理图。

2.编写相应完整的汇编程序,并完成软件模拟调试。

3.使用编程器、实验箱调试程序。

四、实验设备:

PC机、编程器、THDPJ—1单片机开发综合实验箱

五、部分电路原理图

请自行补充最小系统,及P1口未画完的部分

六、实验报告要求

1. 整理好执行正确的程序;

2. 写实验报告,内容包括实验项目、内容,电路原理图,汇编程序,计算说明,实验要求完成情况,心得体会。

单片机原理实验指导书及其程序

实验四、数据段搬移程序设计

一、 实验目的

1. 掌握伟福仿真软件使用。

2. 掌握数据搬移程序的设计。

二、实验说明

实验时间:2学时。 三、实验内容及要求

实验内容:

编程序,将内部数据存储区从地址30H开始的连续16个字节搬到片内数据存储区地址40H开始的连续16个字节,并将地址30H开始的连续16个字节清零。

实验要求:

1.编写程序;

2.先将30H开始的连续16个字节填上数据,再逐步、断点等方法调试程序; 2.编写实验报告。

四、实验设备:

PC机、伟福仿真软件。

实验五、累加程序设计/修改:算术运算程序设计

一、 实验目的

1. 掌握伟福仿真软件使用。 2. 掌握多字节累加程序设计。

二、实验说明

实验时间:2学时。 三、实验内容及要求

实验内容:

编程序,将内部数据存储区从地址30H开始的连续4个双字节数(30H高字节31H低字节、32H高字节33H低字节、34H高字节35H低字节、36H高字节37H低字节)累加,结果存放在38H、39H、3AH(低字节),并计算平均数,存放在3BH、3CH(低字节)。

实验要求:

1.编写程序;

2.先将30H开始的连续4个双字节数数据,再调试程序,多次填上不同数值

观察计算是否正确; 2.编写实验报告。

四、实验设备:

PC机、伟福仿真软件。

实验六、定时器的使用(查询方式)

一、 实验目的

1. 掌握编程器使用。

2. 掌握定时/计数器初始化程序的设计。

3. 掌握使用定时/计数器的方式1、方式2的编程方法。

二、实验说明

实验时间:2学时。

三、实验内容及要求

实验内容

1、选择定时器T1为工作方式1,产生100mS定时,使P1口的八个发光

二极管循环闪亮。

2、选择定时器T1为工作方式2,产生100mS定时,使P1口的八个发光

二极管循环闪亮。

实验要求:

1.补充完整电路原理图;

2.查询方式使用中断;

2.编写相应完整的汇编程序,并完成软件模拟调试;

3.使用编程器、实验箱调试程序。

四、实验设备:

PC机、编程器、THDPJ—1单片机开发综合实验箱

五、部分电路原理图

请自行补充最小系统,及P1口未画完的部分。

六、实验报告要求

1. 整理好执行正确的程序;

2. 写实验报告,内容包括实验项目、内容,电路原理图,汇编程序,定时器的初使化说明,初值计算说明,实验要求完成情况,心得体会。

单片机原理实验指导书及其程序

实验七、定时器的使用(中断方式)

一、实验目的

1. 掌握伟福仿真软件、编程器使用。

2. 掌握定时/计数器初始化程序的设计。

3. 掌握使用定时/计数器的方式1、方式2的编程方法。

二、实验说明

实验时间:2学时。

三、实验内容及要求

实验内容

1、选择定时器T1为工作方式1,产生100mS定时,使P1口的八个发光

二极管循环闪亮。

2、选择定时器T1为工作方式2,产生100mS定时,使P1口的八个发光

二极管循环闪亮。

实验要求:

1.补充完整电路原理图;

2.用中断方式使用定时器;

2.编写相应完整的汇编程序,并完成软件模拟调试;

3.使用编程器、实验箱调试程序。

四、实验设备:

PC机、编程器、THDPJ—1单片机开发综合实验箱

五、部分电路原理图

请自行补充最小系统,及P1口未画完的部分。

六、实验报告要求

1. 整理好执行正确的程序;

2. 写实验报告,内容包括实验项目、内容,电路原理图,汇编程序,定时器的初使化说明,初值计算说明,实验要求完成情况,心得体会。

单片机原理实验指导书及其程序

实验八 同步串口应用于LED静态显示

一、 实验目的

1. 掌握同步串口应用于接口扩展。

2. 掌握七段数码显示设计的基本方法。

二、实验说明

实验时间:3学时。

三、实验内容及要求

实验内容

使用MCS-51单片机的同步串口功能,利用三片8位并行输出串行移位寄存器74LS164,实现000到999的循环显示,每隔100ms将显示数字加一。

实验要求:

1.画出完整电路原理图,并进行实验箱电路连接。

2.编写相应完整的汇编程序,并完成软件模拟调试。

3.使用编程器、实验箱调试程序。

四、实验设备:

PC机、编程器、THDPJ—1单片机开发综合实验箱

六、实验报告要求

1. 整理好执行正确的程序;

2. 写实验报告,内容包括实验项目、内容,电路原理图,汇编程序以及相应当说明注释,实验要求的完成情况,心得体会。

实验九 按键控制LED静态显示

一、 实验目的

1. 掌握同步串口应用于接口扩展。

2. 掌握七段数码显示设计的基本方法。

3. 掌握独立按键查询方式的使用

二、实验说明

实验时间:1学时。

三、实验内容及要求

实验内容

使用MCS-51单片机的同步串口功能,利用三片8位并行输出串行移位寄存器74LS164,实现000到999的循环显示,每按一次按键将显示数字加一。

实验要求:

1.画出完整电路原理图,并进行实验箱电路连接。

2.编写相应完整的汇编程序,并完成软件模拟调试。

3.使用编程器、实验箱调试程序。

四、实验设备:

PC机、编程器、THDPJ—1单片机开发综合实验箱

六、实验报告要求

1. 整理好执行正确的程序;

2. 写实验报告,内容包括实验项目、内容,电路原理图,汇编程序以及相应当说明注释,实验要求的完成情况,心得体会。

实验十 跑表设计

一、 实验目的

1. 掌握同步串口应用于接口扩展。

2. 掌握七段数码显示设计的基本方法。

3. 掌握独立按键中断方式的使用

二、实验说明

实验时间:1学时。

三、实验内容及要求

实验内容

使用MCS-51单片机的同步串口功能,利用五片8位并行输出串行移位寄存器74LS164,实现X分到XX秒XX的显示,按键按下从0分00秒00开始计时,再按按键,时间停止,再按按键,显示数值清零。

实验要求:

1.画出完整电路原理图,并进行实验箱电路连接。

2.编写相应完整的汇编程序,并完成软件模拟调试。

3.使用编程器、实验箱调试程序。

四、实验设备:

PC机、编程器、THDPJ—1单片机开发综合实验箱

六、实验报告要求

1. 整理好执行正确的程序;

2. 写实验报告,内容包括实验项目、内容,电路原理图,汇编程序以及相应当说明注释,实验要求的完成情况,心得体会。

实验二

ORG 0000H SUM: MOV R0,#20H MOV R1,#8 MOV R2,#3

MOV 29H,#00H MOV 2AH,#00H MOV 2BH,#00H LOOP1: MOV A,2AH ADD A,@R0 MOV 2AH,A CLR A

ADDC A,29H MOV 29H,A INC R0

DJNZ R1,LOOP1 MOV 2CH,29H MOV 2DH,2AH LOOP2:CLR C

MOV A,2CH RRC A

MOV 2CH,A MOV A,2DH RRC A

MOV 2DH,A

DJNZ R2,LOOP2 MOV 2BH,A RET

实验三

(一)

ORG 0000H SJMP START ORG 30H

START: MOV A,#0FEH NEXT: MOV P1,A

ACALL DELAY RL A

SJMP NEXT DELAY: MOV R3,#10 DEL1: MOV R4,#100 DEL2: MOV R5,#200 DEL3: DJNZ R5,DEL3 DJNZ R4,DEL2 DJNZ R3,DEL1 RET

END

(二)

ORG 0000H SJMP START ORG 30H

START: MOV A,#0FEH NEXT: MOV R0,#50 MOV R1,#50 LOOP1: ACALL DELAY MOV P1,A RL A

DJNZ R0,LOOP1 LOOP2: ACALL DELAY MOV P1,A RR A

DJNZ R1,LOOP2 SJMP NEXT DELAY: MOV R3,#10 DEL1: MOV R4,#100 DEL2: MOV R5,#200 DEL3: DJNZ R5,DEL3 DJNZ R4,DEL2 DJNZ R3,DEL1 RET

END

实验四

ORG 0000H MOVE:MOV R0,#30H MOV R1,#40H MOV R2,#16 LOOP:MOV A,@R0 MOV @R1,A MOV @R0,#00H INC R0 INC R1

DJNZ R2,LOOP RET

实验五

ORG 0000H

START: MOV R0,#30H MOV R1,#31H MOV R2,#4 MOV R3,#4 MOV R4,#2 MOV 3AH,#00H MOV 39H,#00H MOV 38H,#00H MOV 3CH,#00H MOV 3BH,#00H LOOP1: MOV A,39H ADD A,@R0 MOV 39H,A CLR A

ADDC A,38H MOV 38H,A INC R0 INC R0

DJNZ R2,LOOP1 CLR C

LOOP2: MOV A,3AH ADD A,@R1 MOV 3AH,A

CLR A

ADDC A,39H MOV 39H,A INC R1 INC R1

DJNZ R3,LOOP2 MOV 3DH,38H MOV 3EH,39H MOV 3FH,3AH LOOP3: CLR C

MOV A,3DH RRC A

MOV 3DH,A CLR A MOV A,3EH RRC A

MOV 3EH,A CLR A

MOV A,3FH RRC A

MOV 3FH,A DJNZ R4,LOOP3 MOV 3BH,3EH MOV 3CH,3FH RET

实验六(晶振频率为6MHz) (一)

ORG 0000H

START: MOV TMOD,#10H MOV A,#0FEH SETB TR1

LOOP: MOV TL1,#0B0H MOV TH1,#3CH MOV P1,A

JNB TF1,$

CLR TF1

RL A

SJMP LOOP END

(二)

ORG 0000H

START: MOV TMOD,#20H MOV A,#0FEH MOV TH1,#06H MOV TL1,#06H SETB TR1

LOOP1: MOV R0,#200 LOOP2: JNB TF1,$

CLR TF1

DJNZ R0,LOOP2 RL A

MOV P1,A

SJMP LOOP1 END

实验七(晶振频率为6MHz) (一)

ORG 0000H SJMP START ORG 001BH SJMP SERV ORG 0030H START: MOV SP,#60H MOV TMOD,#10H MOV TH1,#3CH MOV TL1,#0B0H MOV A,#0FEH MOV P1,A SETB EA SETB ET1 SETB TR1 SJMP $

SERV: MOV TH1,3CH MOV TL1,0B0H RL A

MOV P1,A RETI END

(二)

ORG 0000H

SJMP START ORG 001BH SJMP SERV ORG 0030H START: MOV SP,#60H MOV TMOD,#20H MOV TH1,#06H MOV TL1,#06H MOV A,#0FEH MOV P1,A SETB EA SETB ET1 SETB TR1 MOV R0,#200 LOOP: SJMP $ SERV: CLR TF1

DJNZ R0,LOOP1 RL A

MOV P1,A RETI LOOP1: RETI END

实验八

ORG 0000H

MAIN: MOV SCON,#00H MOV 4AH,#00H MOV 4BH,#00H MOV 4CH,#00H

MOV DPTR,#TAB MOV R0,#10 MOV R1,#10 MOV R2,#10 LOOP:ACALL OT ACALL DELAY

MOV A,4AH INC A

MOV 4AH,A DJNZ R0,LOOP MOV 4AH,#00H MOV R0,#10 MOV A,4BH INC A

MOV 4BH,A DJNZ R1,LOOP MOV 4BH,#00H MOV R1,#10 MOV A,4CH INC A

MOV 4CH,A DJNZ R2,LOOP MOV 4CH,#00H MOV R2,#10 SJMP LOOP OT: MOV A,4CH

MOVC A,@A+DPTR MOV SBUF,A JNB TI,$ CLR TI

MOV A,4BH

MOVC A,@A+DPTR MOV SBUF,A JNB TI,$ CLR TI

MOV A,4AH

MOVC A,@A+DPTR MOV SBUF,A JNB TI,$ CLR TI

MOV A,#00H

MOVC A,@A+DPTR MOV SBUF,A JNB TI,$ CLR TI

MOV A,#00H

MOVC A,@A+DPTR MOV SBUF,A JNB TI,$ CLR TI RET

DELAY: MOV R3, #10 DEL1: MOV R4, #2 DEL2: MOV R5, #25 DEL3: DJNZ R5, DEL3 DJNZ R4, DEL2 DJNZ R3, DEL1 RET TAB: DB

0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H DB

0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,0DEH

实验九

ORG 0000H SETB P3.3

MAIN: MOV 4AH,#00H MOV 4BH,#00H MOV 4CH,#00H MOV DPTR,#TAB

MOV R0,#10 MOV R1,#10 MOV R2,#10 LOOP: MOV A,4CH

MOVC A,@A+DPTR MOV SBUF,A JNB TI,$ CLR TI

MOV A,4BH

MOVC A,@A+DPTR MOV SBUF,A JNB TI,$ CLR TI

MOV A,4AH

MOVC A,@A+DPTR MOV SBUF,A JNB TI,$ CLR TI

MOV A,#00H

MOVC A,@A+DPTR MOV SBUF,A JNB TI,$ CLR TI

MOV A,#00H

MOVC A,@A+DPTR

MOV SBUF,A JNB TI,$ CLR TI JB P3.3,$ JNB P3.3,$

MOV A,4AH INC A

MOV 4AH,A DJNZ R0,LOOP MOV 4AH,#00H MOV R0,#10 MOV A,4BH INC A

MOV 4BH,A DJNZ R1,LOOP MOV 4BH,#00H MOV R1,#10 MOV A,4CH INC A

MOV 4CH,A DJNZ R2,LOOP MOV 4CH,#00H MOV R2,#10 SJMP LOOP TAB: DB

0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H DB

0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,0DEH

实验十

ORG 0000H

SETB P3.3

MAIN: MOV 4AH,#00H MOV 4BH,#00H MOV 4CH,#00H MOV 4DH,#00H MOV 4EH,#00H MOV R0,#10 MOV R1,#10 MOV R2,#10 MOV R3,#6 MOV R4,#10

MOV DPTR,#TAB ACALL OT JB P3.3,$ JNB P3.3,$ LOOP:ACALL OT

ACALL DELAY MOV A,4AH INC A

MOV 4AH,A DJNZ R0,TJ MOV 4AH,#00H MOV R0,#10 MOV A,4BH INC A

MOV 4BH,A DJNZ R1,TJ MOV 4BH,#00H MOV R1,#10 MOV A,4CH INC A

MOV 4CH,A DJNZ R2,TJ MOV 4CH,#00H MOV R2,#10 MOV A,4DH INC A

MOV 4DH,A DJNZ R3,TJ MOV 4DH,#00H MOV R3,#6 MOV A,4EH INC A

MOV 4EH,A DJNZ R4,TJ MOV 4EH,#00H MOV R4,#10 TJ: JB P3.3,LOOP JNB P3.3,$ JB P3.3,$ JNB P3.3,$ SJMP MAIN OT: MOV A,4EH MOVC A,@A+DPTR

MOV SBUF,A JNB TI,$ CLR TI

MOV A,4DH MOVC A,@A+DPTR

MOV SBUF,A JNB TI,$ CLR TI MOV A,4CH MOVC A,@A+DPTR

MOV SBUF,A JNB TI,$ CLR TI

MOV A,4BH MOVC A,@A+DPTR

MOV SBUF,A JNB TI,$ CLR TI

MOV A,4AH MOVC A,@A+DPTR

MOV SBUF,A JNB TI,$ CLR TI RET

DELAY: MOV R5, #10 DEL1: MOV R6, #5 DEL2: MOV R7, #25 DEL3: DJNZ R7, DEL3 DJNZ R6, DEL2 DJNZ R5, DEL1 RET TAB: DB

0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H DB

0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,0DEH

相关推荐