延时程序的书写:

以12MHZ为晶振的atm89s51单片机的机器周期为1us为例子
执行一次MOV需要1个机器周期----1us

执行一次DJNZ需要2个机器周期---2us

执行一次nop需要1个机器周期----1us

执行一次RET需要2个机器周期---2us

使用循环程序

实验任务一:

已知程序存储器中以TAB为起点地址的空间存放着0~9的平方值,累加器A中存放着一个0~9的十进制数据,要求用查表的方法获得A中数据的平方值

org 0000hmov 30h, #0mov 31h, #1mov 32h, #2mov 33h, #3mov 34h, #4mov 35h, #5mov 36h, #6mov 37h, #7mov 38h, #8mov 39h, #9call start        ;将0-9的数据依次放在30h-39h的位置上
start:MOV R0,#30H    ;初始化寄存器R0MOV R2,#10MOV DPTR,#TAB  ;DPTR作为指针,指向TAB表的地址
LOOP:MOV A, @R0     ;将寄存器R0中的数据传送到累加器A中MOVC A, @A + DPTR;DPTR的地址加上A的偏移地址中的值传送到累加器A中INC R0       ;R0加一,指向R0寄存器中存放的下一个值DJNZ R2, LOOP ;循环10次RET  ;子程序结束
TAB:
DB 0,1,4,9,16,25,36,49,64,81// 将0-9的平方值放入TAB中
END

实验结果:debug验证查看:

实验任务二:

从片外数据存储器2000H单元开始有16个数据:0~15,请求出相应数的平方,并存入片内RAM50H开始的存储单元,试编程实现。

org 0000hstart:MOV R0,   #50H    ;寄存器R0指向50H的地址MOV DPTR,   #TAB;数据指针指向TAB数据表MOV P2,#20H      MOV R1,#00H     ;R1寄存器指向2000H的位置,用于取出2000H的值MOV R2, #16      ;循环语句计数使用,循环16次
LOOP: MOVX  A,@R1  ;外部RAM R1传送到累加器MOVC  A,@A + DPTR;将DPTR加上A的偏移的地址指向的值传送到累加器A中MOV   @R0,A ;将累加器A中的值传送到R0,即50H开始的寄存器位置         INC  DPTR  ;加1INC  R0  ;加1INC  R1      ;加1DJNZ  R2 ,LOOP   ;计数16次后循环结束SJMP $TAB:
DB 0,1,4,9,16,25,36,49,64,81,100,121,144,169,225// 将0-15的平方值放入TAB表中
END

实验结果:debug验证:

实验任务三:

用汇编语言编程,将片外数据存储器地址为1000H~1030H的数据块,全部搬迁到片内RAM30H~60H中,并将原数据块区域全部清0。

MOV R1,#30    ;计数使用
MOV R0,#30H  ;R0指向30H处
MOV DPTR,#1000H ;数据指针指向1000H处
LOOP:MOVX A,@DPTR ;将数据指针地址的值传入寄存器AMOV @R0,A    ;将A的值放入30HCLR A         ;将A中的值清零MOVX @DPTR,A ;将DPTR指向的值清零INC R0        ;加一INC DPTR     ;加一DJNZ R1,LOOP ;计数循环30次END

实验结果查看:

实验任务四:

用汇编语言编程,在P1口输出,实现跑马灯功能。用Proteus软件仿真。

;单片机晶振12MHZ,一个机器周期1Us
ORG 0000H                ;源程序起始地址jmp main            ;跳转到MAINORG  0050h          ;主程序开始地址MAIN:MOV     A,#0FFH CLR     C       MOV     R2,#08H LOOP1:  RLC     A       /*左移一位*/MOV     P1,A    LCALL   delay    DJNZ    R2,LOOP1    MOV     R2,#08H LOOP2:  RRC     A       /*右移一位*/MOV     P1,A    LCALL   delay DJNZ    R2,LOOP2    JMP     MAIN    delay:
MOV R3,#162
d1: MOV R4,#166
d2: nopnopdjnz R4,d2nopdjnz R3,d1ret     ;延时器延时 108222usend

实验任务五:

用C语言编程,将片外数据存储器地址为1000H~1030H的数据块,全部搬迁到片内RAM30H~60H中,并将原数据块区域全部清0。

#include "reg51.h"
#include "stdio.h"void  main(void)
{char  data  i;char  data  *dp1 ;     /*定义一个指向pdata区的指针dp1*/char  xdata  *dp2  ;    /*定义一个指向xdata区的指针dp2*/dp1 = 0x30;         //dp1指向片内RAM0X30Hdp2 = 0x1000;     //dp2指向片外ox1000h处for(i=0;i<30;i++){*dp1 = *dp2;  //将1000h-1030h处的值赋给30h-60h*dp2 = 0; //将0x1000h处的值清零dp1++;         //指针后移一位dp2++;            //指针后移一位}   }

实验任务六:

汇编语言编程,在P1口输出,实现跑马灯功能。用Proteus软件仿真。

#include"reg51.h"
#include<intrins.h>//文件包含左移右移函数
typedef unsigned int u16 ;
typedef unsigned char u8;//对数据类型进行声明void delay(unsigned int n)
{unsigned int i=0,j=0;for(i=0;i<n;i++){for(j=0;j<120;j++) ;}
}void led()
{int i=0;for(i=0;i<8;i++){P1 = ~(0x01<<i) ;//0000 0001     //左移P2 = 0x80>>i;delay(108);    //延时108ms}for(i=0;i<8;i++){P1 = ~(0x80>>i);     //1000 0000   //右移P2 = 0x01<<i;delay(108);}}
void main()
{while(1){led();}
}

2021-4-19单片机原理及应用作业相关推荐

  1. 一个女生物联人的自学单片机笔记2021.1.19(单片机---准备阶段)

    Hello!宝宝们,今天是2021.1.19,这里是甜小姐的后花园. 这是我的第一篇博客,以后这里就是我的秘密基地啦!我会在这里分享自己的心得和学习到的知识和体会,嘀嘀嘀,同时呢也会分享我自己的心情, ...

  2. [渝粤教育] 昆明理工大学 单片机原理及接口技术(宋庆和) 参考 资料

    教育 -单片机原理及接口技术(宋庆和)-章节资料考试资料-昆明理工大学[] 1.4 发展趋势 1.[多选题]未来单片机发展趋势表现在以下几个方面 A.CPU流水线结构.增加数据总线的宽度提高运算速度和 ...

  3. 2021年人工神经网络第四次作业 - 第二题MNIST手写体识别

    简 介: ※MNIST数据集合是深度学习基础训练数据集合.改数据集合可以使用稠密前馈神经网络训练,也可以使用CNN.本文采用了单隐层BP网络和LeNet网络对于MNIST数据集合进行测试.实验结果标明 ...

  4. 2021年人工神经网络第四次作业-第五题:危险品识别

    简 介: 通过对于物品X射线数据集合的整理,挑选出15类体积比较大的物品,训练LeNet网络进行识别. 关键词: X射线,危险品识别,LeNet,Paddle #mermaid-svg-wZUMACG ...

  5. 2021年人工神经网络第四次作业-第一题:LeNet对于水果与动物进行分类

    简 介: 对于有五种动物和五中水果组成的FAMNIST数据集合的图像分类问题进行了测试.本文主要是集中在前期的数据库的准备和网络的构建方面.对于网络的详细测试参见在 对于FAMNIST中的十种动物和水 ...

  6. [渝粤教育] 西南科技大学 单片机原理与应用 在线考试复习资料(2)

    单片机原理与应用--在线考试复习资料 一.单选题 1.信息能够同时双向传送的是( ). A.并行通信 B.单工串行通信 C.半双工串行通信 D.全双工串行通信 2.T89S52单片机片内有( )个定时 ...

  7. MSP430单片机原理及应用 实验

    单片机原理及应用 课程实验(二) 实验项目:MSP430简单程序设计 实验目的:学会用C语言进行简单程序设计 实验要求:掌握编写排序程序 实验内容: (1)设计一个对8个数据(0-255,任意设置)的 ...

  8. 山东大学单片机原理与应用实验 C语言程序实验

    一.实验题目 C语言程序实验 二.试验要求 片内RAM30H开始的32个单元中分布着随机的有符号8位二进制数,按从小到大的顺序进行排序,排序后的数据仍然保存到30H开始的32个单元中(低地址存放小数据 ...

  9. 山东大学单片机原理与应用实验 汇编程序实验2

    一.实验题目 汇编程序实验2 二.实验要求 片内RAM30H开始的32个单元中分布着随机的有符号8位二进制数,按从小到大的顺序进行排序,排序后的数据仍然保存到30H开始的32个单元中(低地址存放小数据 ...

最新文章

  1. Shiro第一个程序:官方快速入门程序Qucickstart详解教程
  2. URAL - 1099 Work Scheduling(一般图最大匹配-带花树模板)
  3. 目录爆破工具 -- dirsearch
  4. codevs1014 装箱问题
  5. java线程 stop()_java 多线程5: java 终止线程及中断机制 (stop()、interrupt() 、interrupted()、isInterrupted())...
  6. SpringBoot集成MyBatis-Plus分页插件
  7. roboware使用过程中出出现找不到功能包的解决办法
  8. SSH 与 SFTP
  9. shiro框架实现权限管理
  10. 山东济南ISO9001认证|ISO14001认证|ISO45001认证|ISO三体系认证的流程
  11. win10系统优化与防范策略
  12. CSDN-markdown编辑器使用
  13. HTML格式及W3C验证工具
  14. 零基础Java难学吗?自学怎么样?
  15. t00ls.net关闭了
  16. 批量添加联系人的方法
  17. 学习Android启动初始化 App StartUp
  18. SpringBoot笔记十四:消息队列
  19. 华为认证到底值不值得考?
  20. 朗伯辐射强度模型MATLAB,朗伯体辐射出射度与辐亮度的关系.PPT

热门文章

  1. 第六节 交叉分析和非参数检验
  2. Android--Telephony
  3. Dicom学习之一:大尾和小尾LittleEndian/BigEndian
  4. 织梦dedecms 仿制目标网站首页
  5. 中国合金钢材的种类区分界定
  6. 计算机算出幽默的公式,幽默(二)段子的基本公式
  7. latex中文支持问题,自动化学报latex模板问题
  8. UE4 C++入门之路1-C++和蓝图的关系和介绍
  9. MATLAB中颜色模型介绍级各模型之间转换(RGB、HSV、NTSC、YCbCr、HSI)
  10. MySQL的my-innodb-heavy-4G.ini配置文件的翻译