【微机实验报告(含思考题)河畔下的哈】实验3
微机原理实验报告册(3篇)

第1篇一、实验目的1. 理解和掌握微机的基本组成和工作原理;2. 熟悉微机硬件设备和实验仪器的使用方法;3. 提高动手实践能力,培养解决实际问题的能力;4. 深入理解微机原理课程内容,为后续课程学习奠定基础。
二、实验内容1. 微机系统认识实验2. 微机硬件组成实验3. 微机指令系统实验4. 微机寻址方式实验5. 微机程序设计实验6. 微机接口技术实验三、实验仪器与设备1. 微机原理实验箱2. 示波器3. 数字万用表4. 计算机一台5. 实验指导书四、实验步骤与内容1. 微机系统认识实验(1)观察实验箱的结构,了解各个模块的功能;(2)熟悉实验箱的电源、复位、运行等按钮的使用方法;(3)学习微机系统的工作流程,包括加电、复位、启动等过程;(4)观察微机系统启动后的运行状态,了解各个模块的协同工作。
2. 微机硬件组成实验(1)观察实验箱的CPU、内存、I/O接口等硬件模块;(2)学习CPU的内部结构,包括寄存器、控制单元、运算单元等;(3)学习内存的存储原理,了解ROM、RAM等存储器的特点;(4)学习I/O接口的工作原理,了解中断、DMA等传输方式。
3. 微机指令系统实验(1)学习微机指令系统的基本格式,包括操作码、地址码等;(2)掌握微机指令系统的寻址方式,包括立即寻址、直接寻址、间接寻址等;(3)编写简单的汇编语言程序,实现加、减、乘、除等运算;(4)学习微机中断处理过程,了解中断向量表、中断服务程序等概念。
4. 微机寻址方式实验(1)学习微机寻址方式的基本概念,包括直接寻址、间接寻址、寄存器寻址等;(2)编写程序,实现不同寻址方式下的数据访问;(3)观察不同寻址方式对程序执行速度的影响。
5. 微机程序设计实验(1)学习汇编语言程序设计的基本方法,包括数据定义、指令编写、程序结构等;(2)编写简单的程序,实现数据交换、排序等操作;(3)学习微机程序的调试方法,包括单步执行、断点设置等。
6. 微机接口技术实验(1)学习微机接口技术的基本概念,包括并行接口、串行接口等;(2)观察实验箱中的并行接口、串行接口等模块,了解其工作原理;(3)编写程序,实现数据在并行接口、串行接口之间的传输;(4)学习微机中断处理在接口技术中的应用。
微机原理实训报告完整

资料范本本资料为word版本,可以直接编辑和打印,感谢您的下载微机原理实训报告完整地点:__________________时间:__________________说明:本资料适用于约定双方经过谈判,协商而共同承认,共同遵守的责任与义务,仅供参考,文档可直接下载或修改,不需要的部分可直接删除,使用时请详细阅读内容一、设计目的通过课程设计使学生更进一步掌握微机原理及应用课程的有关知识,提高应用微机解决问题的能力,加深对微机应用的理解。
通过查阅资料,结合所学知识进行软、硬件的设计,使学生初步掌握应用微机解决问题的步骤及方法。
为以后学生结合专业从事微机应用设计奠定基础。
二、设计的原始资料及依据(1)查阅微机原理及应用、汇编语言程序设计等书籍;(2)掌握字符串的输入,输出和排序。
三、设计的主要内容及要求内容:从PC键盘输入5个字符串,排序及显示要求1)输入5个字符串。
2)对输入的字符串进行排序并正确显示。
四、对设计说明书撰写内容、格式、字数的要求1.课程设计说明书(论文)是体现和总结课程设计成果的载体,一般不应少于3000字。
2.学生应撰写的内容为:目录、正文、参考文献等。
课程设计说明书(论文)的结构及各部分内容要求可参照《沈阳工程学院毕业设计(论文)撰写规范》执行。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
3.说明书(论文)手写或打印均可。
手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;打印时按《沈阳工程学院毕业设计(论文)撰写规范》的要求进行打印。
4. 课程设计说明书(论文)装订顺序为:封面、任务书、成绩评定表、目录、正文、总结、参考文献。
五、设计完成后应提交成果的种类、数量、质量等方面的要求;提交课程设计说明书一份。
在说明书中要有设计原理、硬件电路接线图、设计的程序及必要注释等。
六、时间进度安排;沈阳工程学院微机原理及汇编语言程序设计程设计成绩评定表系(部):信息学院班级:学生姓名:目录TOC \o "1-3" \h \z \uHYPERLINK \l "_Toc359478386" 第1章绪论 PAGEREF_Toc359478386 \h 1HYPERLINK \l "_Toc359478387" 1.1 背景 PAGEREF_Toc359478387 \h 1HYPERLINK \l "_Toc359478388" 1.2 设计目的与任务 PAGEREF _Toc359478388 \h 1HYPERLINK \l "_Toc359478389" 1.2.1 本课程设计的目的 PAGEREF _Toc359478389 \h 1HYPERLINK \l "_Toc359478390" 1.2.2 本课程设计的任务 PAGEREF _Toc359478390 \h 1HYPERLINK \l "_Toc359478391" 第2章汇编语言的运行环境及运行步骤 PAGEREF _Toc359478391 \h 2HYPERLINK \l "_Toc359478392" 2.1 汇编语言的起源 PAGEREF _Toc359478392 \h 2HYPERLINK \l "_Toc359478393" 2.2 汇编语言的特点 PAGEREF _Toc359478393 \h 2HYPERLINK \l "_Toc359478394" 2.2.1 能够保持机器语言的一致性,直接、简捷 PAGEREF _Toc359478394 \h 2HYPERLINK \l "_Toc359478395" 2.2.2 目标代码简短,占用内存少,执行速度快 PAGEREF _Toc359478395 \h 2HYPERLINK \l "_Toc359478396" 2.2.3 汇编语言是面向机器的PAGEREF _Toc359478396 \h 2HYPERLINK \l "_Toc359478397" 2.2.4 难于从汇编语言代码上理解程序设计意图,可维护性差 PAGEREF _Toc359478397 \h 2HYPERLINK \l "_Toc359478398" 2.2.5 高速度和高效率 PAGEREF _Toc359478398 \h 2HYPERLINK \l "_Toc359478399" 2.3 汇编语言的运行环境 PAGEREF _Toc359478399 \h 3HYPERLINK \l "_Toc359478400" 2.4 汇编语言的运行步骤 PAGEREF _Toc359478400 \h 3HYPERLINK \l "_Toc359478401" 第3章总体设计思路 PAGEREF _Toc359478401 \h 6HYPERLINK \l "_Toc359478402" 3.1 功能设计分析 PAGEREF_Toc359478402 \h 6HYPERLINK \l "_Toc359478403" 3.1.1 设计思路分析 PAGEREF _Toc359478403 \h 6HYPERLINK \l "_Toc359478404" 3.1.2 系统功能分析: PAGEREF _Toc359478404 \h 6HYPERLINK \l "_Toc359478405" 3.2 总体设计分析 PAGEREF_Toc359478405 \h 6HYPERLINK \l "_Toc359478406" 3.2.1 系统功能模块图 PAGEREF _Toc359478406 \h 6HYPERLINK \l "_Toc359478407" 3.2.2 具体设计方案 PAGEREF _Toc359478407 \h 6HYPERLINK \l "_Toc359478408" 第4章程序实现 PAGEREF_Toc359478408 \h 8HYPERLINK \l "_Toc359478409" 4.1 运行程序 PAGEREF_Toc359478409 \h 8HYPERLINK \l "_Toc359478410" 4.1.1 单步运行 PAGEREF_Toc359478410 \h 8HYPERLINK \l "_Toc359478411" 4.1.2 暂停执行程序 PAGEREF _Toc359478411 \h 8HYPERLINK \l "_Toc359478412" 4.1.3 连续运行程序 PAGEREF _Toc359478412 \h 8HYPERLINK \l "_Toc359478413" 4.2 各个模块程序流程图设计PAGEREF _Toc359478413 \h 9HYPERLINK \l "_Toc359478414" 4.2.1 第一模块输入字符串PAGEREF _Toc359478414 \h 9HYPERLINK \l "_Toc359478415" 4.2.2 第二模块字符串排序PAGEREF _Toc359478415 \h 9HYPERLINK \l "_Toc359478416" 4.2.3 第三模块输出字符串PAGEREF _Toc359478416 \h 10HYPERLINK \l "_Toc359478417" 第5章遇到问题及解决方法PAGEREF _Toc359478417 \h 12HYPERLINK \l "_Toc359478418" 5.1 所遇到的问题 PAGEREF_Toc359478418 \h 12HYPERLINK \l "_Toc359478419" 5.2 对应问题的解决方法 PAGEREF _Toc359478419 \h 12HYPERLINK \l "_Toc359478420" 总结 PAGEREF_Toc359478420 \h 13HYPERLINK \l "_Toc359478421" 致谢 PAGEREF_Toc359478421 \h 14HYPERLINK \l "_Toc359478422" 参考文献 PAGEREF_Toc359478422 \h 15HYPERLINK \l "_Toc359478423" 附录 PAGEREF_Toc359478423 \h 16HYPERLINK \l "_Toc359478424" 源程序代码: PAGEREF_Toc359478424 \h 16第1章绪论1.1 背景计算机技术作为信息化的核心技术受到全社会的普遍重视。
微机原理实验报告

实验报告题目:实验三循环程序设计专业:网络工程班级: 0902学号: 0930040250姓名:郭文明指导教师:胡美娇完成日期:2011年12月12日一、实验目的:1、掌握循环程序的设计方法。
2、掌握比较指令、转移指令和循环指令的使用方法。
3、进一步掌握调试工具的使用方法。
二、实验环境:硬件环境 IBM/PC 及其兼容机软件环境操作系统DOS编辑程序EDIT或其他编辑程序汇编程序MASM.EXE连接程序LINK.EXE调试程序DEBUG.EXE三、实验内容:1. 从屏幕上输入一个三位数的十进制数,把十进制的值存放在AX寄存器中2. 把内存单元ARRAY 中存放的数值,显示在屏幕上(即完成二进制与十进制直接的转换)3. 计算1+2+……n=?,其中n通过键盘输入。
要求在屏幕上提供如下信息:Please input a number(1 350): 100 ;出现此信息后通过键盘输入一个小于628的无符号整数The sum is: 5050四、实验要求:1、按照实验程序流程图,独立完成源代码的编写。
开始从键盘输入一个十进制数,并将其转换为二进制数,存放在AX中累加循环次数送CX(MOV CX,AX)AX清0(AX中存放累加和)BX送1(BX存放每次循环累加的数,每循环一次,BX值加1)ADD AX,BXINC BXN(CX)-1=0Y累加和(在AX中)转换为十进制数并显示结束2、在DOS环境下使用MASM完成对源代码的编译、连接,有必要的情况下使用debug.exe进行调试。
3、WINDOS环境下使用EMU8086完成上第2步的工作。
4、与程序流程图比较,验证是否完成规定的功能,若未达要求,返回第1步。
5、提交完成的源代码,要求对关键语句进行注释。
①data segmentbuf db 10db ?db 10 dup(?)data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,offset bufmov ah,0ahint 21hlea si,buf+2mov cl,buf+1mov ch,0mov ax,0mov dl,10aa:mul dlsub [si],30hadd al,[si]adc ah,0inc siloop aamov bx,axmov ah,4chint 21hcode endsend start②data segmentarray dw 9997buf db 5 dup(?)data endscode segmentassume cs:code,ds:datastart:mov ax,data mov ds,axlea si,buf mov cx,0mov ax,array mov bx,10aa:mov dx,0div bxmov [si],dlinc siinc cxcmp ax,0jnz aabb: dec siadd [si],30hmov dl,[si]mov ah,2int 21hloop bbmov ah,4chint 21hcode endsend start③DATA SEGMENTBUF DB 10DB ?DB 10 DUP(?)array dw 0MEG DB 'Please input a number(1~350):',10,13,'$' MEG1 DB 0dh,0ah,'The sum is:$'DATA ENDSSTACK SEGMENTDB 100 DUP('S')STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AXCALL INPUT1MOV CX,AXXOR AX,AXMOV BX,1LOP: ADD AX,BXINC BXLOOP LOPmov array,axCALL OUTPUT1MOV AH,4CHINT 21HINPUT1 PROC NEARLEA DX,MEGMOV AH,9INT 21HMOV DX,OFFSET BUF MOV AH,10INT 21HLEA SI,BUF+2MOV CL,BUF+1MOV CH,0MOV AX,0MOV DL,10A1:MUL DLSUB [SI],30HADD AL,[SI]ADC AH,0INC SILOOP A1MOV BX,AXRETINPUT1 ENDPOUTPUT1 PROC NEAR LEA DX,MEG1MOV AH,9INT 21Hlea si,bufmov cx,0mov ax,array mov bx,10aa:mov dx,0div bxmov [si],dlinc siinc cxcmp ax,0jnz aabb: dec siadd [si],30hmov dl,[si] mov ah,2int 21hloop bbRETOUTPUT1 ENDPCODE ENDSEND START6、写出实验小结,内容包括实验心得(收获)、不足之处或今后应注意的问题等。
微机原理实验报告

微机原理实验报告概述:微机原理是计算机科学与技术专业中的一门重要课程,通过实验学习,可以加深对计算机内部运行原理的理解,提高软硬件的开发和调试能力。
本实验报告将介绍我对微机原理实验的学习和思考。
实验一:二进制转换实验在这个实验中,我首先了解了二进制数的概念以及其和十进制数的转换方法。
通过实际操作,我加深了对计算机内部数据表示方式的理解。
这对于后续学习计算机系统结构和编程语言至关重要。
实验二:逻辑门电路实验逻辑门电路是计算机硬件的基础组成部分,通过实验,我学会了使用逻辑门芯片构建各种逻辑电路,并能够通过真值表分析和验证逻辑电路的正确性。
这对于理解计算机内部的数据处理和控制逻辑有着直接的帮助。
实验三:运算器设计实验在这个实验中,我通过学习和设计算术逻辑单元(ALU),了解了计算机的算术操作过程,并能够通过运算器实现基本算术运算。
这对于理解计算机内部数据的处理和计算机指令的执行有着重要的意义。
实验四:存储器与外设实验存储器是计算机系统的重要组成部分,通过实验,我深入了解了存储器的类型、组织结构和访问方式,并通过外设与存储器的交互,实践了计算机系统的输入和输出过程。
实验五:微处理器实验微处理器是计算机系统中最核心的部件,通过实验,我学习了微处理器的基本运行原理,能够通过汇编语言编写程序,并通过微处理器执行程序实现特定的功能。
这个实验为我今后学习计算机体系结构和操作系统打下了坚实的基础。
实验总结:通过这几个实验,我深入了解了微机原理课程的实践内容和相关知识。
实验的过程中,我不仅学会了使用仪器设备和工具,还培养了自己的动手能力和团队合作精神。
通过不断的实践,我对计算机内部结构和运行原理有了更深刻的理解,也提高了我的问题解决能力和创新思维。
未来展望:微机原理实验的学习只是计算机科学与技术专业中的一小部分。
我希望在今后的学习过程中能加深对计算机体系结构、操作系统、编程语言等方面的学习,并不断深入钻研,成为一名优秀的计算机科学与技术专业人才。
微机原理实验三实验报告

实验3. 循环程序设计一、实验目的⒈掌握移位指令的使用方法。
⒉学会循环结构程序的编程方法。
⒊利用DEBUG调试程序查看循环程序循环过程中CS和IP的变化情况。
二、实验要求⒈编写程序并上机调试,记录运行结果。
⒉用DEBUG调试程序调试所编程序,查看并记录每条指令内存单元地址及执行结果(包括F标志寄存各位值。
)⒊注意观察并记录每条指令执行后CS和IP寄存器值变化情况,以加深对循环程序的概念的理解。
三、实验内容⒉编写统计15个学生数学学习成绩程序。
要求:分别统计出低于60分,60-69分,70-79分,80-89分,90-100分的人数,并存放到S5,S6,S7,S8,S9,S10对应内存单元中。
源程序代码;DATA SEGMENTDATA1 DB 55,60,65,88,67,70,75,80,77,85,90,66,95,53,100DATA2 DB 5 DUP(?)DATA ENDS;CODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CX,15LEA SI,DATA1LEA DI,DATA2AGAIN:MOV AL,[SI]CMP AL,90JB NEXT1INC BYTE PTR[DI]JMP NEXT0NEXT1:CMP AL,80JB NEXT2INC BYTE PTR[DI+1]JMP NEXT0NEXT2:CMP AL,70JB NEXT3INC BYTE PTR[DI+2]JMP NEXT0NEXT3:CMP AL,60JB NEXT4INC BYTE PTR[DI+3]JMP NEXT0NEXT4:INC BYTE PTR[DI+4]NEXT0:INC SILOOP AGAINMOV AH,4CHINT 21HCODE ENDSEND START程序运行结果截图:四、实验总结本次实验掌握移位指令的使用方法。
微机原理的实验报告

一、实验目的1. 理解微机的基本组成和各部件的功能;2. 掌握微机的工作原理和指令系统;3. 熟悉汇编语言程序设计的基本方法;4. 提高动手能力和实际操作技能。
二、实验内容1. 微机系统组成实验(1)实验目的:了解微机的基本组成和各部件的功能。
(2)实验内容:观察并记录微机系统的各个部件,如CPU、内存、硬盘、主板等,并了解它们的功能。
(3)实验步骤:①观察微机系统各个部件的连接情况;②了解各个部件的功能和作用;③分析微机系统的整体结构。
2. 微机工作原理实验(1)实验目的:掌握微机的工作原理。
(2)实验内容:观察并记录微机工作过程中的各个阶段,如指令的取指、译码、执行等。
(3)实验步骤:①观察微机工作过程中的各个阶段;②了解各个阶段的功能和作用;③分析微机工作原理。
3. 指令系统实验(1)实验目的:熟悉汇编语言指令系统。
(2)实验内容:学习汇编语言的基本指令,如数据传送指令、算术运算指令、逻辑运算指令等。
(3)实验步骤:①学习汇编语言的基本指令;②编写简单的汇编语言程序,实现数据传送、算术运算、逻辑运算等功能;③调试程序,观察程序运行结果。
4. 汇编语言程序设计实验(1)实验目的:提高汇编语言程序设计能力。
(2)实验内容:编写一个汇编语言程序,实现以下功能:①计算两个数的和;②判断一个数是否为偶数;③输出程序运行结果。
(3)实验步骤:①编写汇编语言程序,实现上述功能;②调试程序,观察程序运行结果;③分析程序运行过程,确保程序正确性。
三、实验结果与分析1. 微机系统组成实验:通过观察和记录微机系统的各个部件,了解了微机的基本组成和各部件的功能。
2. 微机工作原理实验:通过观察微机工作过程中的各个阶段,掌握了微机的工作原理。
3. 指令系统实验:通过学习汇编语言的基本指令,熟悉了汇编语言指令系统。
4. 汇编语言程序设计实验:通过编写汇编语言程序,提高了汇编语言程序设计能力。
四、实验心得通过本次微机原理实验,我对微机的基本组成、工作原理和指令系统有了更深入的了解。
微机基础实验报告

一、实验目的1. 熟悉微机的基本结构和工作原理。
2. 掌握微机基本操作,包括启动、关闭、使用键盘和鼠标等。
3. 学习微机操作系统的基础知识,包括文件管理、程序管理、系统设置等。
4. 培养动手能力和独立解决问题的能力。
二、实验环境1. 硬件环境:微机一台、显示器一台、键盘一个、鼠标一个。
2. 软件环境:Windows操作系统、常用办公软件等。
三、实验内容及步骤1. 微机基本结构和工作原理(1)观察微机外部结构,了解各部件的名称和功能。
(2)打开微机,观察启动过程,了解微机自检和启动顺序。
(3)学习微机内部结构,了解CPU、内存、硬盘、显卡等部件的功能。
(4)了解微机工作原理,包括指令执行过程、数据传输过程等。
2. 微机基本操作(1)学习启动和关闭微机的方法,了解安全关机的重要性。
(2)学习使用键盘和鼠标进行基本操作,如打开、关闭程序、切换窗口等。
(3)学习使用快捷键提高工作效率。
3. 微机操作系统基础知识(1)学习Windows操作系统的基本界面和功能。
(2)学习文件管理,包括创建、复制、移动、删除文件和文件夹等操作。
(3)学习程序管理,包括安装、卸载、运行程序等操作。
(4)学习系统设置,包括显示设置、声音设置、网络设置等。
4. 实验练习(1)练习使用Windows自带的画图软件,绘制简单的图形。
(2)练习使用Word文档编辑功能,制作一份简单的文档。
(3)练习使用Excel表格处理功能,制作一份简单的表格。
(4)练习使用PowerPoint演示文稿制作功能,制作一份简单的演示文稿。
四、实验结果与分析1. 实验结果通过本次实验,我们熟悉了微机的基本结构和工作原理,掌握了微机基本操作,学习了微机操作系统基础知识,并能够运用所学知识解决实际问题。
2. 实验分析(1)在实验过程中,我们发现微机的基本操作对于提高工作效率具有重要意义。
熟练掌握键盘和鼠标操作,能够使我们更加高效地完成工作。
(2)在文件管理方面,了解文件和文件夹的基本操作,有助于我们更好地管理计算机中的数据。
微机原理的实验报告

微机原理的实验报告一、实验目的本实验旨在深入理解微机原理的相关知识,并通过实践操作,掌握微机原理的实验方法与技巧。
二、实验内容1. 搭建微机实验系统:根据实验所需,搭建适当的微机实验系统,包括各种硬件设备的连接与设置。
2. 硬件接口的实验:通过连接不同的硬件接口,进行实验操作,学习硬件接口的使用方法和原理。
3. 程序设计与调试实验:使用相应的汇编语言或高级语言,编写程序并进行调试,观察程序的执行结果。
4. 中断实验:通过调用不同的中断服务例程,进行实验操作,学习中断的使用原理和应用场景。
三、实验步骤与结果1. 实验步骤:(1) 搭建微机实验系统:按照实验指导书的要求,连接各种硬件设备,确保能够正常工作。
(2) 硬件接口的实验:选择一个硬件接口,例如并行口,通过编写相应的程序,实现读取和输出数据的功能。
观察实验现象并记录。
(3) 程序设计与调试实验:根据实验要求,选择适当的编程语言,编写相应的程序,并进行调试。
观察程序的执行结果,并记录相关数据。
(4) 中断实验:选择一个中断服务例程,例如键盘中断,通过编写相应的程序,实现对键盘输入的响应。
观察实验现象并记录相关数据。
2. 实验结果:(1) 硬件接口的实验结果:通过编写程序并连接硬件接口,成功读取和输出数据,实现了相应的功能。
(2) 程序设计与调试实验结果:编写的程序能够正确执行,并得到了预期的结果。
(3) 中断实验结果:编写的程序能够响应相应的中断信号,并实现了对键盘输入的处理。
四、实验分析与讨论1. 实验分析:通过本次实验,我们深入了解了微机原理的相关知识,并通过实践操作,掌握了微机原理的实验方法和技巧。
2. 实验讨论:在实验过程中,我们遇到了一些困难和问题,例如硬件接口的连接和调试,程序的编写和调试等。
但通过彼此的合作与讨论,我们最终解决了这些问题,并成功完成了实验。
五、实验总结通过本次实验,我们对微机原理有了更深入的理解,并通过实践操作,掌握了微机原理的实验方法和技巧。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子科技大学
实验报告
学号学生姓名:
课程名称:
任课老师:
实验项目名称
实验三 ARM汇编实现串口通信实验
【实验目的】
1.掌握ARM 的串行口工作原理。
2.学习编程实现ARM和PC机的UART通信。
3.掌握ARM裸机下汇编语言编程方法。
【实验内容】
1.学习串行通信原理,了解串行通信控制寄存器。
2.编程实现ARM 和计算机之间的串行通信。
【预备知识】
1、ARM汇编基础
2、ARM处理器通用IO口的操作
【实验设备和工具】
⏹硬件:ARM嵌入式开发平台,PC 机一台,并口线,串口线,JTAG板
⏹软件:RVDS,H-JTAG
【实验原理】
1.异步串行I/O
异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。
数据的各不同位可以分时使用同一传输通道,因此串行I/O 可以减少信号连线,最少用一对线(输入,输出)即可进行。
2.串口通信流程
串口通信就是读写寄存器的操作,通过配置相关寄存器,查询寄存器就可以操作串口通信。
需要配置的寄存器有系统时钟,UART行控制寄存器,UART控制寄存器,UART FIFO控制寄存器,UART MODEM控制寄存器,UART波特率控制寄存器;需要查询的寄存器是发送/接收状态寄存器。
【实验步骤】
1. 打开CodeWarrior for RVDS,建立一个工程,通过查S3C2440处理器手册的UART通信寄存器,serialcommutication.s文件中添加代码实现串口通信传输
2. 设置工程配置选项,Language Setting->Realview Assembler和Realview Compiler中的Architecture设置为ARM920T,配置RVDS下的连接器Linker->Realview Linker中的RO Base 为0x30000000
3. 编译和调试工程。
4. 连接PC和实验板的并口,串口;并口连接至ARM的JTAG口,串口连接至COM PORT 口;打开电源;打开H-JTAG程序(。
5. 点击调试器Dubeg->Run,运行程序,打开超级终端,在开始->程序->附件->通讯里打开超级终端,使用COM1,设置波特率115200,8位数据位,无奇偶校验,1位停止位,无数据流控制。
6. 从键盘输入数据,观察超级终端是否打印出字符。
如有正确的字符打印,则通信成功。
【实验结果和程序】
实验程序:
;************** SerialCommunication Experiment*****************
;相关寄存器地址定义
CLKDIVN EQU 0x4C000014 ;CLKDIVN for PCLK and FCLK
CAMDIVN EQU 0x4C000018 ;CANDIVN
ULCON0 EQU 0x50000000 ;UART line control register 0
UCON0 EQU 0x50000004 ;UART control register 0
UFCON0 EQU 0x50000008 ;UART FIFO control register 0
UMCON0 EQU 0x5000000C ;UART modem control register 0
UBRDIV0 EQU 0x50000028 ;UART baud rate divisor register 0
UTRSTAT0 EQU 0x50000010 ;UART TX/RX status register 0
UTXH0 EQU 0x50000020 ;UART transmit buffer register 0
URXH0 EQU 0x50000024 ;UART receive buffer register 0
MPLLCON EQU 0x4C000004 ;MPLL control register
GPHCON EQU 0x56000070 ;GPIO F control register
GPHUP EQU 0x56000078 ;GPIO F pull-up register
AREA SerialCommunication,CODE,READONL Y
ENTRY
ldr r2,=MPLLCON ;设置MPLL为0x00076022 FCLK=Mpll=(2*m*Fin)/(p*(2的s次方)), Fin=16.9344MHz
; m=(MDIV+8), p=(PDIV+2), s=SDIV
mov r3,#0x22
mov r4,#0x00076000
ADD r3,r3,r4
str r3,[r2]
ldr r2,=CLKDIVN ; CLKDIVN 设置为0x03, PCLK=FCLK/4
mov r3,#0x03
str r3,[r2]
ldr r2,=CAMDIVN ; CLKDIVN 设置为0x0200, PCLK=FCLK/4
mov r3,#0x200
str r3,[r2]
ldr r2,=ULCON0 ; ULCON0 设置为0x03, 含义是正常操作模式,无校验,停止位1,8个数据位
mov r3,#0x03
str r3,[r2]
ldr r2,=UCON0 ;UCON0 设置为0x05 表示发送、接收数据都使用查询方式
mov r3,#0x05
str r3,[r2]
ldr r2,=UFCON0 ;UFCON0 设置为0x00 为不使用FIFO
mov r3,#0x00
str r3,[r2]
ldr r2,=UMCON0 ;UMCON0 设置为0x00 为不使用流控
mov r3,#0x00
str r3,[r2]
ldr r2,=UBRDIV0 ;UBRDIV0 设置为36,含义为波特率设为115200, 由下面公式算得:UBRDIVn = (int)(PCLK/bps*16)-1
;其中PCLK =66.68MHz
mov r3,#36
strh r3,[r2]
ldr r2,=GPHCON ;UART0 set to rxd and txd
ldr r3,=0xa0
str r3,[r2]
ldr r2,=GPHUP ;pull up
ldr r3,=0x0f
str r3,[r2]
;-------------填写代码实现串口传输--------------
C_UTRSTAT00
ldr r2,=UTRSTAT0
ldr r3,[r2]
add r3,r3,#1
CMP r3,#0
beq C_UTRSTAT00
C_UTRSTAT01
ldr r2,=UTRSTAT0
ldr r3,[r2]
add r3,r3,#2
cmp r3,#0
beq C_UTRSTAT01
ldr r2,=UTXH0
ldr r3,=URXH0
ldr r4,[r3]
str r4,[r2]
B C_UTRSTA T00
END
【思考题】
1. 查看相关寄存器,思考怎么配置UART时钟信号和UART配置寄存器?
答:设置mellcon寄存器的值可以设置时钟,改变ulcon的值可以配置UART配置寄存器。
2. 修改串口传输函数,使其在超级终端中输入“Enter”回车键后,输出“回车”加“换行”。
(“回车”和“换行”对应的ASCⅡ码分别为0x0d和0x0a).
答:函数修改为:
C_UTRSTAT00
ldr r2,=UTRSTAT0
ldr r3,[r2]
add r3,r3,#1
CMP r3,#0
beq C_UTRSTAT00
C_UTRSTAT01
ldr r2,=UTRSTAT0
ldr r3,[r2]
add r3,r3,#2
cmp r3,#0
beq C_UTRSTAT01
ldr r2,=UTXH0
ldr r3,=URXH0
ldr r4,[r3]
str r4,[r2]
cmp r4,0x0d
blne X
B C_UTRSTA T00
X
bl C_UTRSTA T00
bl C_UTRSTA T01
ldr r2,=UTXH0
ldr r4,#0x0a
str r4,[r2]
【实验结论】
本实验体现的异步串口通信的代码实现过程。