2021-4-19单片机原理及应用作业
延时程序的书写:
以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单片机原理及应用作业相关推荐
- 一个女生物联人的自学单片机笔记2021.1.19(单片机---准备阶段)
Hello!宝宝们,今天是2021.1.19,这里是甜小姐的后花园. 这是我的第一篇博客,以后这里就是我的秘密基地啦!我会在这里分享自己的心得和学习到的知识和体会,嘀嘀嘀,同时呢也会分享我自己的心情, ...
- [渝粤教育] 昆明理工大学 单片机原理及接口技术(宋庆和) 参考 资料
教育 -单片机原理及接口技术(宋庆和)-章节资料考试资料-昆明理工大学[] 1.4 发展趋势 1.[多选题]未来单片机发展趋势表现在以下几个方面 A.CPU流水线结构.增加数据总线的宽度提高运算速度和 ...
- 2021年人工神经网络第四次作业 - 第二题MNIST手写体识别
简 介: ※MNIST数据集合是深度学习基础训练数据集合.改数据集合可以使用稠密前馈神经网络训练,也可以使用CNN.本文采用了单隐层BP网络和LeNet网络对于MNIST数据集合进行测试.实验结果标明 ...
- 2021年人工神经网络第四次作业-第五题:危险品识别
简 介: 通过对于物品X射线数据集合的整理,挑选出15类体积比较大的物品,训练LeNet网络进行识别. 关键词: X射线,危险品识别,LeNet,Paddle #mermaid-svg-wZUMACG ...
- 2021年人工神经网络第四次作业-第一题:LeNet对于水果与动物进行分类
简 介: 对于有五种动物和五中水果组成的FAMNIST数据集合的图像分类问题进行了测试.本文主要是集中在前期的数据库的准备和网络的构建方面.对于网络的详细测试参见在 对于FAMNIST中的十种动物和水 ...
- [渝粤教育] 西南科技大学 单片机原理与应用 在线考试复习资料(2)
单片机原理与应用--在线考试复习资料 一.单选题 1.信息能够同时双向传送的是( ). A.并行通信 B.单工串行通信 C.半双工串行通信 D.全双工串行通信 2.T89S52单片机片内有( )个定时 ...
- MSP430单片机原理及应用 实验
单片机原理及应用 课程实验(二) 实验项目:MSP430简单程序设计 实验目的:学会用C语言进行简单程序设计 实验要求:掌握编写排序程序 实验内容: (1)设计一个对8个数据(0-255,任意设置)的 ...
- 山东大学单片机原理与应用实验 C语言程序实验
一.实验题目 C语言程序实验 二.试验要求 片内RAM30H开始的32个单元中分布着随机的有符号8位二进制数,按从小到大的顺序进行排序,排序后的数据仍然保存到30H开始的32个单元中(低地址存放小数据 ...
- 山东大学单片机原理与应用实验 汇编程序实验2
一.实验题目 汇编程序实验2 二.实验要求 片内RAM30H开始的32个单元中分布着随机的有符号8位二进制数,按从小到大的顺序进行排序,排序后的数据仍然保存到30H开始的32个单元中(低地址存放小数据 ...
最新文章
- Shiro第一个程序:官方快速入门程序Qucickstart详解教程
- URAL - 1099 Work Scheduling(一般图最大匹配-带花树模板)
- 目录爆破工具 -- dirsearch
- codevs1014 装箱问题
- java线程 stop()_java 多线程5: java 终止线程及中断机制 (stop()、interrupt() 、interrupted()、isInterrupted())...
- SpringBoot集成MyBatis-Plus分页插件
- roboware使用过程中出出现找不到功能包的解决办法
- SSH 与 SFTP
- shiro框架实现权限管理
- 山东济南ISO9001认证|ISO14001认证|ISO45001认证|ISO三体系认证的流程
- win10系统优化与防范策略
- CSDN-markdown编辑器使用
- HTML格式及W3C验证工具
- 零基础Java难学吗?自学怎么样?
- t00ls.net关闭了
- 批量添加联系人的方法
- 学习Android启动初始化 App StartUp
- SpringBoot笔记十四:消息队列
- 华为认证到底值不值得考?
- 朗伯辐射强度模型MATLAB,朗伯体辐射出射度与辐亮度的关系.PPT
热门文章
- 第六节 交叉分析和非参数检验
- Android--Telephony
- Dicom学习之一:大尾和小尾LittleEndian/BigEndian
- 织梦dedecms 仿制目标网站首页
- 中国合金钢材的种类区分界定
- 计算机算出幽默的公式,幽默(二)段子的基本公式
- latex中文支持问题,自动化学报latex模板问题
- UE4 C++入门之路1-C++和蓝图的关系和介绍
- MATLAB中颜色模型介绍级各模型之间转换(RGB、HSV、NTSC、YCbCr、HSI)
- MySQL的my-innodb-heavy-4G.ini配置文件的翻译