电子科技大学中山学院微处理器实验报告
微处理器实验报告
《微处理器实验》实验报告一、实验目的与任务1、掌握80C51单片机程序的调试与下载方法。
2、掌握80C51单片机并口的工作原理及输入输出控制方法。
3、理解和学会单片机外部中断的使用;4、学习单片机定时器/计数器的应用。
二、实验原理介绍80C51单片机包括P0~P3共4个并口,除可作为普通I/O口使用外,P0口还可用作8位数据总线口和低8位地址口,P2可用作高8位地址口,P3.6、P3.7可用作外部RAM或I/O接口的读、写控制引脚,P3.0~P3.5可用作串口、外部中断、计数器的功能引脚。
ZSC-1实验箱包括4个单片机,其中1#单片机(MCU1)和2#单片机(MCU2)的型号都是STC12C5A60S2,只是封装不同。
STC12C5A60S2采用80C51内核,片内资源和性能较标准80C51单片机增强了许多。
本课程的全部实验只用到MCU1。
图3-1为本实验对应的硬件电路。
P0口用于控制发光管L101~L108,口线输出0(低电平)时,对应的发光管点亮,口线输出1(高电平)时,对应的发光管熄灭。
P3口的4根口线连接独立按键KX0~KX3,由于P3口内部上拉电阻的作用,按键松开时,对应的口线表现为1状态(高电平),按键按下时,对应的口线表现为0状态(低电平)。
中断是指在突发事件到来时先中止当前正在进行的工作,转而去处理突发事件。
待处理完成后,再返回到原先被中止的工作处,继续进行随后的工作。
引起突发事件的来源称为中断源,中断源要求服务的请求称为中断请求,对中断请求提供的服务称为中断服务,中断管理系统处理事件的过程称为中断响应过程。
51类单片机至少包括5个中断源:INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。
(本实验用)INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。
T0:定时器/计数器0中断,由T0计满回零引起。
(本实验用)T1:定时器/计数器l中断,由T1计满回零引起。
微处理器实验报告
微处理器实验报告摘要:本文旨在介绍微处理器实验及其结果,内容包括实验目的、实验器材与方法、实验过程、实验结果和分析以及实验结论等。
通过本次实验,我们对微处理器的工作原理和应用有了更深刻的理解,并能够熟练地进行一些简单的微处理器操作。
1. 引言微处理器是现代计算机的核心组成部分,其作用是负责指令的执行和数据的处理。
在这个实验中,我们将通过操作微处理器,深入了解其内部构造和工作原理。
同时,我们也将学习如何正确地使用微处理器进行一些简单的计算和控制任务。
2. 实验目的本次实验的目的是:- 了解微处理器的基本工作原理;- 掌握微处理器的基本操作方法;- 理解不同指令的功能和使用方法;- 实现一些简单的计算和控制任务。
3. 实验器材与方法3.1 实验器材:- 微处理器实验箱- 示波器- PC机3.2 实验方法:首先,根据实验指导书上给出的实验电路图,按照电路图连接实验器材。
然后,将微处理器与PC机通过串口或者并口连接起来。
接下来,根据实验指导书上给出的指令,编写相应的程序代码并将其烧录到微处理器中。
最后,通过操作微处理器,观察实验结果并进行实验数据的采集和分析。
4. 实验过程4.1 硬件连接:根据实验指导书上的电路图,连接实验箱和示波器,保证电路的正常工作。
4.2 软件编程:根据实验指导书上的指令,使用相应的软件工具或编程语言编写程序代码,并将其烧录到微处理器中。
4.3 实验操作:按照实验指导书上的要求,操作微处理器进行各种指令的执行,观察实验结果并记录相关数据。
5. 实验结果与分析通过本次实验,我们成功地完成了一些简单的微处理器操作,并观察到了相应的实验结果。
在实验中,我们使用了一些常见的指令,如加法指令、乘法指令和逻辑指令等,并实现了一些简单的计算和控制任务。
同时,我们还观察到了微处理器的运行速度以及实验过程中的一些注意事项。
通过对实验数据的分析,我们发现微处理器在执行指令时的速度非常快,能够实时处理大量的数据,并及时给出相应的计算结果。
电子科技大学微处理器与嵌入式系统设计实验报告一
电⼦科技⼤学微处理器与嵌⼊式系统设计实验报告⼀微处理器系统结构与嵌⼊式系统设计实验报告微处理器系统结构与嵌⼊式系统设计实验名称 ARM基础编程实验⼀、实验⽬的1.熟悉并掌握常⽤ARM汇编指令2.熟悉并掌握“C+汇编”混合编程技术3.熟练使⽤ARM软件开发调试⼯具Keil⼆、实验内容1.学习使⽤Keil开发⼯具2.使⽤ARM汇编语⾔,编程实现1+2+……+N累加运算功能3.使⽤C调⽤汇编函数,实现字符串拷贝功能4.使⽤汇编调⽤C函数,实现求和运算功能5.使⽤ARM汇编语⾔,实现冒泡排序算法(选做)三、实验步骤1.实验1.1:运⾏Keil,建⽴⼯程⽂件,单步运⾏调试演⽰⽰例程序,深刻理解每⼀条指令,观察寄存器,内存空间的变化。
2.实验1.2:⽤汇编语⾔实现1+2+...+N的累加:a)建⽴新⼯程,加⼊实验1.2⽂件夹中的sum.s。
b)⽤汇编补充算法核⼼部分,代码参考流程图如下图1.1所⽰。
c)使⽤单步调试,仔细观察过程中关键寄存器值的变化。
微处理器系统结构与嵌⼊式系统设计实验报告RO=R0+R1R1=R1+1SUM_END结果溢出?R1>=NNOYESYESNO图1.13. 实验1.3:C 调⽤汇编实现字符串拷贝功能:a) 建⽴新⼯程,加⼊实验1.3⽂件夹中的main.c 和testfile.s(同⼀个⼯程下添加两个⽂件⼀起编译)。
b) 补充完成源代码中缺失的部分,分别实现1. 拷贝源字符串的⼀个字节到R2中;2. 将拷贝的字节复制到⽬标空间。
c) 运⾏Debug 进⾏调试。
4. 实验1.4:汇编调⽤C 实现求和1+2+ (10)a) 建⽴新⼯程,加⼊实验1.4⽂件夹中的sum.c 和testfile.s(同⼀个⼯程下添加两个⽂件⼀起编译)。
b) 补充完成源代码中缺失的部分,通过调⽤c 函数g()实现1+2+3+glovb1,结果存在R8中。
c) 运⾏Debug 进⾏调试5. 实验1.5:ARM 汇编实现冒泡算法:a) 建⽴新⼯程,加⼊实验1.5⽂件夹中的maopao.s 。
电子科技大学中山学院微处理器实验报告 (11)
Col |= 0x40; //显示第二行时DDRAM地址从40H开始
Col |= 0x80; //拼为DDRAM地址设置命令
LCD1602CmdWrite(Col); //发送DDRAM地址
while( *Str )
LCD1602DataWrite(*Str++); //连续发送每个字符的ASCII码
LCD1602_EN=1;
LCD1602_DATA=cmdByte; //发送命令字节
LCD1602_EN=0;
}
//*****************************LCD1602写数据函数*********************
void LCD1602DataWrite(uint8 DataByte)
//*****************************电子钟时间调整函数********************
void RTClockAdj()
{
if(++RTClock.Second< 60 ) return;
RTClock.Second=0;
if(++RTClock.Minute< 60 ) return;
{
TH0=(65536-45*1024)>>8; //设置50ms定时初值(对应晶振11.0592MHz)
TL0=(65536-45*1024)&0xFF;
if(++Timer50ms< 20 ) return;
Timer50ms=0; //已满1s,Timer50ms清0
RTClockAdj(); //时间调整
void Delay(uint16 ms)
微处理二
JNBACC.7, AA;若A中值为大,则转AA ;JNB:位状态为0时跳转
CXA:MOVA, @R0;若A中值为小,则将大数送入A
SJMPBB
LAT:XRLA, @R0;恢复A中原值MOV A, R1;通过两次异或恢复原值
JNBACC.7, BB;若A中值为正,侧转BB
MOVR3, #0;结果单元清零
MOVR2, #0
CLR C
LOOP:MOVA, @R0;取数
ACALLSORT;调用求平方子程序;调用子程序
ADDA, R2;累加平方和
MOVR2, A
MOV A,R3
ADDCA, #0;加进位Cy ;提取进位
MOV R3, A ;R3放高位,R2放低位
INCR0 ;修改指针
在汇编语言程序设计中,普遍采用结构化程序设计方法。因为任何复杂的程序都可由顺序结构、分支结构及循环结构等构成。每种结构只有一个入口和出口,整个程序也只有一个入口和出口。结构化程序设计的特点是程序的结构清晰、易于读写和验证、可靠性高。结构化程序设计的基本方法有顺序结构、分支结构、循环结构、子程序。
本实验在实验一基础上,要求掌握分支、循环结构程序以及子程序的设计方法。
1)不必重复编写同样的程序,提高了编码的效率。
2)缩短了源程序和目标程序的长度,节省了程序存储器的空间。
3)使程序模块化、通用化,便于阅读、交流和共享。
4)便于分块调试。
参数传递大致可分为以下几种方法:
1)传递数据:将数据通过工作寄存器R0~R7和累加器来传送。即主程序和子程序在交接处,通过工作寄存器或累加器存储要传递的参数。
二、实验仪器
PC机一台(已安装Keil uVision软件)
电子科技大学微机实验报告-实验2
实验二 ARM 汇编控制LED 实验【实验目的】1、理解掌握通过ARM 汇编控制硬件操作;2、熟练使用ARM 调试软件RVDS 进行硬件调试。
【实验内容】1、掌握ARM 处理器GPIO 相关寄存器的使用;2、用ARM 汇编实现控制开发LED 按照一定方式点亮。
【预备知识】1、ARM 汇编基础2、ARM 处理器通用IO 口的操作【实验设备和工具】软件:Windows 操作系统,RVDS 软件硬件:ARM 嵌入式开发板,PC 机Pentium100 以上,并口线,JTAG 板,JTAG 连接线【实验原理】1、 S3C2440 处理器相关寄存器介绍PORT G 控制寄存器( GPGCON )PORT G 数据寄存器(GPGDAT)PORT G 禁止上拉寄存器(GPGUP)注:以上寄存器详细描述见实验指导书或者S3C2440 芯片手册。
2、开发板LED 部分原理图说明GPG5 接LED4,串联上拉电阻GPG6 接LED5,串联上拉电阻GPG7 接LED6,串联上拉电阻GPG8 接LED7,串联上拉电阻所以,当IO 口输出低电平时,相应的LED 才能点亮。
【实验步骤】(一)LED 汇编实验1、通过查看S3C2440 处理器G 口控制寄存器,在文件中添加汇编代码,设置GPG5-GPG8 为output。
2、在文件中添加汇编代码,禁止GPG5-GPG8 端口的上拉电阻。
3、在文件中添加汇编代码,点亮LED6,熄灭LED5,LED7,LED8,并调用延时。
4、在文件中添加汇编代码,点亮 LED7,熄灭 LED5,LED6,LED8,并调用延时。
5、在文件中添加汇编代码,点亮LED8,熄灭LED5,LED6,LED7,并调用延时。
6、在文件中添加汇编代码,实现LED5-LED8 依次点亮。
7.连接好 JTAG 仿真板,一口与 PC 的并口相连,另一口与开发板的 JTAG 口相连,打开开发板电源。
打开H-jtag 程序,检测CPU,点击RVDS 中的“Debu g”,打开RVD 进行硬件调试(二)LED C 语言实验(选做)【实验结果和程序】(一)LED 汇编实验;GPIO 寄存器宏定义GPGCON EQU 0xGPGDAT EQU 0xGPGUP EQU 0xEXPORT LEDTESTAREA LEDTESTASM,CODE,READONL Y ; 该伪指令定义了一个代码段,段名为LEDTESTASM,属性只读ENTRYLEDTEST;设置GPG5-GPG8(即LED4--LED7)为outputldr r0,=GPGCONldr r1,[r0]movr1,#0x00015400str r1,[r0];禁止GPG5-GPG8(即LED4--LED7)端口的上拉电阻ldr r0,=GPGUPldr r1,[r0]movr1,#0x01e0str r1,[r0]looptest;将数据端口G 的数据寄存器的地址附给寄存器r2ldr r2,=GPGDAT; 点亮LED5,熄灭LED6-LED8,并调用延时ldr r3,[r2]orrr3,r3,#0x01e0bicr3,r3,#0x0020str r3,[r2] ;GPG5(即LED5) output 0ldr r0,=0xffffff ;初始计数值bl delay ;调用延迟子程序;----------点亮LED6,熄灭LED5,LED7,LED8,并调用延时---- ldr r3,[r2]orrr3,r3,#0x01e0bicr3,r3,#0x0040str r3,[r2] ;GPG6(即LED6) output 0ldr r0,=0xffffff ;初始计数值bl delay;----------点亮LED7,熄灭LED5,LED6,LED8,并调用延时---- ldr r3,[r2]orrr3,r3,#0x01e0bicr3,r3,#0x0080str r3,[r2] ;GPG7(即LED7) output 0ldr r0,=0xffffff ;初始计数值bl delay;----------点亮LED8,熄灭LED5,LED6,LED7,并调用延时---- ldr r3,[r2]orrr3,r3,#0x01e0bicr3,r3,#0x0100str r3,[r2] ;GPG8(即LED8) output 0 ldr r0,=0xffffff ;初始计数值bl delay;-------------实现LED5-LED8 依次点亮-------------------b looptestdelaysub r0,r0,#1 ;r0=r0-1cmp r0,#0x0 ;将r0 的值与0 相比较bne delay ;比较的结果不为0(r0 不为0),继续调用delay,否则执行下一条语句mov pc,lr ;返回END ;程序结束符(二)LED C 语言实验(选做)arm 汇编部分:AREA |DATA|,CODE,READONL YENTRY;ldr r13,=0x1000IMPORT mainb mainENDC 语言部分://---------------Serial Experiment--------------------//-----------This is coded by UESTC HQ 20/*串口通信C 程序,按‘e’退出通信*/#define ULCON0 (*(volatile unsigned *)0x) //UART 线控制寄存器#define UCON0 (*(volatile unsigned *)0x) //UART 控制寄存器#define UFCON0 (*(volatile unsigned *)0x) //FIFO 控制寄存器#define UMCON0 (*(volatile unsigned *)0x5000000C) //AFC disable#define UTRSTA T0 (*(volatile unsigned*)0x) //UART 状态寄存器#define UBRDIV0 (*(volatile unsigned *)0x) //波特率#define UTXH0 (*(volatile unsigned *)0x)#define URXH0 (*(volatile unsigned *)0x)#define CAMDIV0 (*(volatile unsigned *)0x4C000018)#define GPHCON (*(volatile unsigned *)0x)#define GPHDAT (*(volatile unsigned *)0x)#define GPHUP (*(volatile unsigned *)0x)#define MPLLCON (*(volatile unsigned *)0x4C000004)#define UPLLCON (*(volatile unsigned *)0x4C000008)#define CLKDIVN (*(volatile unsigned *)0x4C000014)#define WTCON (*(volatile unsigned *)0x)void initpll(){MPLLCON=0x76022; //Fin=, Fout=CLKDIVN=0x07; //0000 0111}void inituart(){ULCON0=0x03; //1 位起始位,8 位数据位UCON0 =0x0805; //串口时钟PCLK,查询方式UFCON0 =0x0;UMCON0 =0x0;UBRDIV0 =0x17; // 波特率115200 UBRDIV0 = /(115200*16)-1=24-1=23}void initgpio(){GPHCON |=0xa0; // set to rxd and txdGPHUP |=0x0f; // pull upWTCON &=0xdb;}void uart_send(char * c){for (; *c != '\0'; c++){URXH0 = *c ;}}unsigned char uart_get() {}int main(){UTXH0=URXH0; return UTXH0;char key = ' ';initpll(); //初始化锁相环PLLinitgpio(); //初始化IO 口inituart(); //初始化串口uart_send("If you want to quit ,please press 'e'\r\n"); while(1){key = uart_get();if (key == 'e'){} else {uart_send ("\r\nyou pressed 'e' and you'll quit!\r\n"); break;uart_send(&key);}}uart_send("the program exited by user!\r\n");return 0;}【思考题】1 、如何实现 LED0-LED7 的循环点亮。
电子科技大学中山学院微处理器实验报告(4)
电⼦科技⼤学中⼭学院微处理器实验报告(4)
微处理器实验报告
2.编写⼀段程序,⽤P0⼝作为控制端⼝,使实验箱的LED轮流点亮(⾛马灯)。
⽤定时⾛马灯切换速度。
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP ZIT0
ORG 0100H
MAIN: MOV SP,#60H
MOV TMOD,#01H
3 . 30
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP ZIT0
ORG 0100H
MAIN: MOV SP,#60H
MOV TMOD,#01H
MOV TH0,#8AH
MOV TL0,#0D0H
MOV R6,#50
MOV R7,#0FEH ;准备点亮第⼀只发光管
SETB ET0
五、解答题
1、修改R6=0或1时,观察⾛马灯的速度快慢:
答:0时很慢,1时很快。
2、ZRET处没有重置初值时的⾛马灯的速度与 ZRET处有重置初值时的⾛马灯的速度的⽐较:答:ZRET处没有重置初值时很慢,ZRET处有重置初值时很快。
3、R6=50时,改变T0的初值,设为最⼤、最⼩时,⽐较⾛马灯的速度:
答:很快。
4、去掉R6的软件辅助延时,是否可以?速度怎样?
答:可以,很快,。
电子科技大学中山学院微处理器实验报告 (1)
Keil C51集成开发环境是80C51内核单片机的重要软件开发平台,内嵌多种符合工业标准的开发工具,可完成从工程建立到管理、编译(汇编)、连接、调试等完整的开发流程。Keil C51允许使用汇编或C语言编程,并提供软件模拟和硬件仿真两种调试方式。
本次实验通过几个汇编语言程序熟悉Keil C51集成开发环境的使用,掌握单片机程序设计与调试的一般流程。
三、实验内容和步骤
1(1)
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV SP,#60H;SP=60H
MOV R0,#30H ; R0=30H
MOV R1,#40H ; R1=40H
MOV @R0,#55H ;(30H)=55
MOV @R1,#0AAH ;(40H)=AA
MOV A,@R1 ;A=AA
电子科技大学中山学院学生实验报告
院别:电子信息学院课程名称:微处理器实验
班级
13电科A
姓名
张益航
学号
2012010201070
实验名称
集成开发环境的熟悉与指令练习
实验时间
2015年9月29日
成绩
教师签名
批改时间
报告内容
一、实验目的和任务
1、熟悉Keil C51集成开发环境的使用。
2、掌握80C51单片机程序创建、汇编、连接与调试方法。
END
2
(1)ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV R0,#45H
MOV R2,#16
NEXT1: MOV @R0,#'1'
INC R0
DJNZ R2,NEXT1
电子科技大学微处理器系统结构与嵌入式系统设计实验一
电子科技大学实验报告课程名称微处理器系统结构与嵌入式系统设计实验名称ARM汇编基础实验任课教师 XXX 实验教师 XXX姓名黑XX学号2012XXXXXXXXX 实验地点 XXXXXXX 分组号 X组时间 XXXX年 X月X日XX:XX~XX:XX一、实验目的1.掌握ARM汇编指令。
2.学习掌握C与汇编混合编程基础。
3.熟练使用ARM调试工具RVDS进行调试操作。
二、实验内容1.熟悉ARM汇编。
2.用ARM汇编实现1+2+...+N。
3.C调用汇编实验(实现字符串拷贝功能)。
4.汇编调用C实验。
5.ARM汇编实现冒泡算法(选做)三、实验步骤1)用ARM汇编实现1+2+….n的运算。
在sum.s文件中,添加如下代码:SUN_L1ADD R0,R1BVS SUM_ENDCMP R1,R2BHS SUM_ENDADD R1,#1B SUN_L12)理解C和汇编,并用汇编程序实现字符串拷贝,并在C程序中调用该汇编程序。
在汇编文件testfile1. s中添加两行汇编代码,实现:拷贝源字符串的一个字节到R2中,将拷贝的字节复制到目标空间。
关键代码如下:strcopy;------------------------------------------;用汇编实现字符串拷贝LDRB R2,[R1],#1 ;R1对应源字符串首地址,利用寄存器间接寻址读取字符到R2STRB R2,[R0],#1 ;R0对应目的字符串首地址,利用寄存器间接寻址保存字符CMP R2,#0BNE strcopyMOV PC,LR;------------------------------------------END ;文件结束3)在汇编中调用C函数。
在汇编文件testfile2.s中相应位置添加汇编代码,通过调用c函数g()实现1+2+3+glovb1,结果存在R8中。
关键代码如下:STR LR,[SP,#-4]!MOVS R0,#1MOVS R1,#2MOVS R2,#3LDR R4,=glovb1LDR R3,[R4] ;传递参数BL gMOV R8,R0ADD sp,sp,#4LDR pc,[sp],#4中,通过伪指令EQU,定义N的值。
微处理器实验报告
微处理器实验报告实验1 熟悉并使用传送类指令题3. 模仿test1.Asm的循环结构,编写多字节数据的传送程序,把内部RAM的30H--39H单元置为10H-19H,然后传送到外部RAM的0100H--0109H单元。
提示:(1)用寄存器作内部RAM指针,用DPTR作外部RAM指针。
(2)设置内部RAM的30H--39H单元的值为10H-19H:解:程序如下:ORG 0000HAJMP STARTORG 0100HSTART:MOV R1,#10HMOV DPTR,#0100HMOV R2,#0AHLOOP:MOV A,@R1MOVX @DPTR,AINC R1INC DPTRDJNZ R2,LOOPNOPSJMP $END运行结果如下图所示:在memory1中,在Address 控件填上D:0x30,可查看内部RAM 30h单元开始的值,将30h-39h 置为10h-19h。
实验2:熟悉并使用算术逻辑操作类指令题2.编写程序,将6位压缩BCD码123456与6位BCD码567890相加,结果仍用BCD码表示。
第一组BCD码放在30H开始连续的内部存储器单元内,第二组BCD 码放在40H开始连续的内部存储器单元内,相加结果放在50H开始的连续的内部存储器单元内。
解:程序如下:ORG 0000HAJMP STARTORG 0100HSTART:MOV 30H,#56HMOV 31H,#34HMOV 32H,#12HMOV 40H,#90HMOV 41H,#78HMOV 42H,#56HMOV R0,#30HMOV R1,#40HMOV R2,#03HMOV R3,#50H LOOP:MOV A,@R0ADD A,@R1DA AMOV @R1,AINC R0INC R1INC R3DJNZ R2,LOOP NOPSJMP $END运行结果如下:实验3:顺序程序设计:拆字和拼字题1 .拆字程序69H存放在片外RAM中0200H地址上。
微处理器实习报告
微处理器实习报告一、实习背景及目的随着科技的不断发展,微型计算机技术得到了迅猛的普及和应用,微处理器作为微型计算机的核心部件,其性能和功能越来越受到重视。
为了更好地了解微处理器的工作原理和应用场景,提高自己在计算机领域的实际操作能力,我选择了微处理器实习项目。
本次实习的主要目的是:1. 学习微处理器的基本原理和工作机制;2. 掌握微处理器的编程方法和应用技巧;3. 培养自己在实际项目中解决问题的能力;4. 提高自己的团队协作和沟通能力。
二、实习内容与过程1. 实习前的准备工作:在实习开始前,我们参加了由指导老师举办的实习动员大会,了解了实习的要求和注意事项。
同时,我们还自学了相关教材和资料,为实习打下了扎实的理论基础。
2. 实习过程:实习过程中,我们以小组为单位,共同完成了以下任务:(1)学习微处理器的基本原理:我们通过阅读教材、讨论和请教老师,掌握了微处理器的基本组成、工作原理和性能指标,了解了不同类型的微处理器及其应用场景。
(2)编程实践:我们使用C语言进行编程,实现了简单的微处理器指令集模拟,掌握了寄存器、内存、栈等基本操作,并学会了使用汇编语言进行程序编写。
(3)实际操作:我们使用实验室的微处理器开发板,进行了硬件连接和编程调试,实现了流水灯、计数器等基本功能,并在此基础上进行了一些拓展应用。
(4)项目汇报:在实习结束前,我们以小组为单位进行了项目汇报,展示了实习成果,分享了实习过程中的心得体会和解决问题的方法。
三、实习收获与反思1. 实习收获:通过本次实习,我深入了解了微处理器的基本原理和工作机制,掌握了微处理器的编程方法和应用技巧,提高了自己在实际项目中解决问题的能力,为今后在计算机领域的发展打下了坚实基础。
2. 实习反思:在实习过程中,我发现自己在理论知识和实际操作之间存在一定的差距,需要在今后的学习中加强实践环节。
同时,我也意识到团队协作和沟通能力在实际项目中的重要性,将在今后的工作中更加注重与他人合作,提高自己的沟通技巧。
电子科技大学中山学院微处理器实验报告 (9)
P0=0x7f;
if(P35==0) return 7;//K7
if(P34==0) return 0xF4; //KEYF4
return 0xFF;//KEYNULL
}
void display(unsigned char *dis,unsigned char n)
{0x00,0x3C,0x04,0x08,0x10,0x10,0x10,0x00}, //'7'
{0x00,0x18,0x24,0x24,0x18,0x24,0x24,0x18}, //'8'
{0x00,0x18,0x24,0x24,0x1C,0x04,0x24,0x18}}; //'9'
//{0x0C,0x12,0x12,0x12,0x1E,0x12,0x12,0x00}, //'A'
delay(500);
}
}
void main(void)
{
unsigned char dis[8]={0,1,2,3,4,5,6,7};
while(1)
{
display(dis,8);
}
}
2、用8*8LED点阵循环显示0-9。
#include <reg52.h>
sfr P4 = 0xC0;
sfr P4SW = 0xBB;
}
unsigned char getkey(void)
{
P0=0x00;
if(P34==1&&P35==1)
return 0xFF;//KEYNULL
delay(10);
P0=0xfe;
微处理器与及接口技术实验报告
实验报告实验报告一、实验题目延时警报器二、实验内容1.外设:红色LED:P2.3,绿色LED:P2.4 以及蜂鸣器:P2.1,无按键按下时,绿灯点亮,红灯熄灭,蜂鸣器无声;一旦按键按下,即触发报警器进入报警状态,红绿灯交替闪烁,蜂鸣器发出警报声。
2.按键:选择按键K1(P2.2)模拟非安全情况,按键按下及开始报警。
3.定时器:T0用来定时,控制灯闪烁的时间;T1用来产生中断,到达指定时间后警报自动停止。
整体功能:安全情况下,绿灯点亮,红灯熄灭,蜂鸣器无声;一旦按键按下,即触发报警器进入报警状态,红绿灯交替闪烁,蜂鸣器发出警报声。
到达指定时间后警报自动停止,从而达到报警目的。
三、原理图用AD画出的延时警报器原理图如下:四、实验记录实验前期较为顺利,因为已经提前预习了相关内容。
程序运行无误后烧录进单片机后能实现延时警报器的功能。
但是,在验收时,老师说要求必须有定时器中断,所以用了大量的时间进行中断程序的编写与调试,最后实现了预期的功能。
以下是遇到的问题及解决办法:问题一:烧录程序时显示握手失败,无法找到正确的串口。
解决办法:我的烧录软件版本较低,不能自动找到串口,所以我安装的驱动精灵,下载的驱动,就能找到正确的串口了。
问题二:按下按键后,红绿灯能交替闪烁,但是蜂鸣器不响。
解决办法: 我又重新看了开发板的电路原理图,发现蜂鸣器是低电平的时候发声,所以我改变了高低电平,之后就能正常运转了。
问题三:验收时没有用到定时器中断。
解决办法:我这个延时警报器时一旦报警之后除非按下复位键或断电才能停止报警,所以我想到使用定时器中断,让它能报警10秒钟后自动停止报警,模拟汽车的报警,如果有物体碰到汽车,汽车就会报警,并且一段时间之后会自动停止报警。
在编写这个中断程序的时候暴露出了很多小问题,调用子程序指令我写成了跳转指令,甚至缺少了中断返回指令,这些问题最后都在老师的指导下改正过来,最终实现了预期的功能并加入了定时器中断。
电子科技大学中山学院学生实验报告
电子科技大学中山学院学生实验报告学院:机电工程专业:课程名称:微机原理与应用实验电子科技大学中山学院学生实验报告学院:机电工程专业:课程名称:微机原理与应用实验电子科技大学中山学院学生实验报告学院:机电工程专业:课程名称:微机原理与应用实验电子科技大学中山学院学生实验报告学院:机电工程专业:课程名称:微机原理与应用实验班级:姓名:学号:组别:实验名称:实验四可编程并行接口8255(方式0)实验时间:成绩:教师签名:批改时间:一、实验目的和任务掌握8255方式0的工作原理及使用方法。
二、实验内容1.实验电路如图4-1,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。
2. 编程从8255C口输入数据,再从A口输出。
图4-1 图4-2编程提示:1)8255控制寄存器端口地址28BHA口的地址288HC口的地址28AH2)参考流程图(见图4-2)三、实验过程和数据记录1.源程序:电子科技大学中山学院学生实验报告学院:机电工程专业:课程名称:微机原理与应用实验班级:姓名:学号:组别:实验名称:实验五七段数码管实验时间:成绩:教师签名:批改时间:一、实验目的和任务掌握数码管显示数字的原理。
二、实验内容1.静态显示:按图5-1连接好电路,将8255的A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1接+5V(选中),S0、dp接地(关闭)。
编程从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。
2.动态显示:按图5-2连接好电路,七段数码管段码连接不变,位码驱动输入端S1,S0接8255 C口的PC1,PC0。
编程在两个数码管上显示“56”。
3.动态显示:使用图5-2的电路,编程在两个数码管上循环显示“00-99”。
图5-1 图5-2编程提示:1)实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。
微处理器实习报告
一、实习背景随着科技的飞速发展,微处理器作为计算机系统的核心部件,其性能和功能日益受到重视。
为了更好地了解微处理器的原理和应用,我于2023年在XX科技有限公司进行了为期一个月的微处理器实习。
通过这次实习,我对微处理器的架构、设计、编程以及在实际应用中的性能优化有了更加深入的认识。
二、实习内容1. 微处理器基础知识学习实习初期,我重点学习了微处理器的基本概念、发展历程、分类以及常见型号。
通过查阅资料、参加培训课程,我对微处理器的基本原理有了初步了解,包括指令集、寄存器、总线、缓存等。
2. 微处理器架构分析在实习过程中,我深入研究了不同类型的微处理器架构,如CISC(复杂指令集计算)、RISC(精简指令集计算)以及ARM架构。
通过对这些架构的对比分析,我认识到不同架构在性能、功耗、成本等方面的差异,为后续设计工作提供了理论依据。
3. 微处理器编程实践为了提高实际操作能力,我参与了微处理器编程实践。
在导师的指导下,我使用C语言编写了简单的微处理器程序,实现了对寄存器、内存、I/O端口等资源的操作。
通过实践,我掌握了微处理器编程的基本技巧,为后续开发工作打下了基础。
4. 微处理器性能优化在实习后期,我参与了微处理器性能优化项目。
通过分析程序运行过程中的瓶颈,我提出了相应的优化方案,包括指令重排、流水线优化、缓存优化等。
在实际操作中,我使用编译器优化工具和调试工具对程序进行了优化,有效提升了程序性能。
5. 项目总结与汇报在实习的最后阶段,我对实习期间参与的项目进行了总结,撰写了项目报告。
在导师的指导下,我进行了项目汇报,展示了实习成果。
通过这次汇报,我巩固了所学知识,提高了自己的表达能力。
三、实习收获1. 知识层面:通过实习,我对微处理器的原理、架构、编程以及性能优化等方面有了全面的认识,为今后的工作打下了坚实的基础。
2. 技能层面:在实习过程中,我掌握了微处理器编程、调试、优化等技能,提高了自己的实际操作能力。
微处理器实验报告1
PUSHACC;SP=61H(61H)=33H;PUSH为SP→(SP)+1,(SP)←MOVA,@R1;A=44H ACC
PUSHACC;SP=62H(62H)=44H
NOP
POPACC;SP=61HA=44H;把44H送进SP=62中,然后再把SP减1
MOV@R0,A;(30H)=44H
MOVR0,#34H;R1R0=1234H;指令MOV Rn,#data,实现(data)→Rn
MOVR2,#21H
MOVR3,#0EFH;R3R2=EF21H;分别把各地址送入R1,R0,R2,R3中
MOVA,R0
ADDA,R2;低8位相加R0和R2两个低字节相加,并存到R4
MOVR4,A;
MOVA,R1
3学会程序存储器、寄存器、片上存储器、片外存储器内容的查看和修改。
原理:
Keil集成开发环境为我们提供了强大的学习、调试和开发工具。我们可以利用这套工具在计算机上直接进行汇编语言的编辑、连接和调试。
在程序调试时,可以通过查看相关寄存器和存储器内容来判断程序的执行是否正确,通过修改相关寄存器和存储器的内容来改变程序,再执行,来修改和验证程序。
MOV@R1,#0AAH;(40H)=AAH
MOVA,@R1;A=AAH;指令MOV A,@Ri,即Ri→A
XCHA,@R0;A=55H(30H)=AAH;引入中间变量,实现R0,R1互换
XCHA,@R1;A=AAH(40H)=55H
;下面是另一种方法
MOV@R0,#33H;(30H)=33H
MOV@R1,#44H;(40H)=44H
POPACC;SP=60HA=33H
MOV@R1,A;(40H)=33H
电子科技大学中山学院微处理器实验报告
微处理器实验报告DB 'WELCOME TO ZSC!'ORG 0100HMAIN: CLR EAMOV SP,#60HMOV TMOD,#20HMOV TH1,#0FDHMOV TL1,#0FDHMOV SCON,#50HMOV PCON,#00HSETB TR1MOV R7,#15MOV DPTR,#0050H LOOP: MOV A,#00HMOVC A,@A+DPTRMOV SBUF,AJNB TI,$CLR TIINC DPTRDJNZ R7,LOOPSJMP $END2、编写一段程序,接收主机串行口发送来的字符,在单片机接收到‘X’的时候返回一个‘T’表示正确,否则返回一个‘F’表示错误。
ORG 0000HLJMP MAINORG 0100HMAIN: MOV SP,#60HMOV TMOD,#20H ;设置T1 为方式2MOV TH1,#0FDH ;设置波特率为9600MOV TL1,#0FDHMOV SCON,#50H ;设置串口为方式1MOV PCON,#00HSETB TR1 ;启动定时器1LOOP: JNB RI,$CLR RIMOV A,SBUFCJNE A,#'X',FSENDMOV A,#'T'AJMP SENDFSEND: MOV A,#'F'SEND: MOV SBUF,A ;回发数据JNB TI,$CLR TISJMP LOOPEND3、采用串行口中断方式,实现与实验2相同的功能。
ORG 0000HLJMP MAINORG 0023HLJMP ZRS232ORG 0100HMAIN: CLR EAMOV SP,#60HMOV TMOD,#20HMOV TH1,#0FDHMOV TL1,#0FDHMOV SCON,#50HMOV PCON,#00HSETB ESSETB TR1SETB EASJMP $ZRS232: JB RI,ZRZT: CLR TIAJMP ZENDZR: CLR RIMOV A,SBUFCJNE A,#'X',FSENDMOV A,#'T'AJMP SENDFSEND: MOV A,#'F'SEND: MOV SBUF,AZEND: RETIENDORG 0000HLJMP MAINORG 0023HLJMP ZRS232ORG 0100H MAIN: CLR EAMOV SP,#60HMOV TMOD,#20HMOV TH1,#0FDHMOV TL1,#0FDHMOV SCON,#50HMOV PCON,#00HSETB ESSETB TR1SETB EASJMP $ZRS232: JB RI,ZRZT: CLR TIAJMP SENDZR: CLR RIMOV A,SBUFCJNE A,#'$',LPCLR ESSJMP L P1LP: MOV B,ASUBB A,#'9'+1MOV A,BJC SENDSUBB A,#'Z'+1MOV A,BJNC SENDADD A,#20HSEND: MOV SBUF,AJNB TI,$CLR TILP1: RETIEND五.实验结论1.串行通信要设定共同波特率。
微处理器实验报告2
2018/2019 学年第一学期《微处理器应用设计与实训》实验报告实验项目学生专业学生班级学生学号学生姓名指导教师DAC数模转换实验1 方案设计与要求实现功能:由STM32的DAC实现四种波形的输出,将DAC输出的模拟波形作为STM32的ADC的输入进行采样,将采样得到的值在LCD显示屏上显示即画出波形。
2 原理2.1 STM32F4 DAC简介STM32的DAC模块(数字/模拟转换模块)是12位数字输入,电压输出型的DAC。
DAC可以配置为8位或12位模式,也可以与DMA控制器配合使用。
DAC工作在12位模式时,数据可以设置成左对齐或右对齐。
DAC模块有2个输出通道,每个通道都有单独的转换器。
在双DAC模式下,2个通道可以独立地进行转换,也可以同时进行转换并同步地更新2个通道的输出。
DAC可以通过引脚输入参考电压VREF+以获得更精确的转换结果。
STM32的DAC模块主要特点有:①2个DAC转换器:每个转换器对应1个输出通道②8位或者12位单调输出③12位模式下数据左对齐或者右对齐④同步更新功能⑤噪声波形生成⑥三角波形生成⑦双DAC通道同时或者分别转换⑧每个通道都有DMA功能DAC模块方图:VDDA和VSSA为DAC模块模拟部分的供电。
Vref+则是DAC模块的参考电压。
DAC_OUTx就是DAC的输出通道了(对应PA4或者PA5引脚)。
2.2 DAC转换不能直接对寄存器DAC_DORx写入数椐,任何输出到DAC通道x 的数据都必须写入DAC_DHRx 寄存器(数据实际写入DAC_DHR8Rx、DAC_DHR12Lx、DAC_DHR12Rx、DAC_DHR8RD、DAC_DHR12LD、或者DAC_DHR12RD寄存器)。
如果没有选中硬件触发(寄存器DAC_CR1的TENx位置’0’),存入寄存器DAC_DHRx的数据会在一个APB1时钟周期后自动传至寄存器DAC_DORx。
如选中硬件触发(寄存器DAC_CR1的TENx位置'1’),数椐传输在触发发生以后3个APB1时钟周期后完成。
AD与DA转换实验详解
PwmOut(i);
j=100;
while(--j);
}
}
}
void Delay(uint16 ms)
{int i,j;
for(i=0;i<ms;i++)
for(j=0;j<100;j++);
}
仿真波形如右图所示:
2、设计程序,利用STC12C5A60S2单片机内部PCA模块产生PWM信号,经低通滤波后输出正弦波。
此外,CCAP1H(字节地址为FBH)和CCAP1L(字节地址为EBH)分别是PCA模块1捕捉/比较寄存器的高8位和低8位。在8位PWM模式下,当PCA计数器低8位(CL)的值小于CCAP1L时,PWM1引脚输出为低,大于或等于CCAP1L时,PWM1引脚输出为高;另外,当CL的值由FFH加到00H(溢出)时,CCAP1H的当前值自动加载到CCAP1L中,因此,程序只需对CCAP1H进行设定,即可在PWM1引脚稳定输出相应占空比的PWM信号。
void PwmInit()
{CMOD=0x08;
CCAPM1=0x42;
CR=1;
}
void PwmOut(uint8 Duty)
{CCAP1H=255-Duty;
}
void main()
{
int i,j;
PwmInit();
/*while(1)
{PwmOut(30);
Delay(800);
PwmOut(120);
ADC_CONTR&=~0x10;
return ADC_RES;
}
void UartInit()
{
TMOD=0x20;
TH1=TL1=0xFD;
电子科技大学中山学院微处理器实验报告(10)
for(j=0;j<128;j++)
//反转90°(1024步)
for(i=0;i<8;i++) {
P2=REV_TABLE[i] Delay(5);
;
//查表并输出反转相序字
//软件延时(控制步进电机转速)
} Delay(2000);
}
} //******************************软件延时函数*************************
//********************************头文件声明*************************
#include <reg51.h>
//*******************************数据类型定义************************ typedef unsigned char uint8; typedef unsigned int uint16; //****************************特殊功能寄存器声明*********************
uint8 ScanKey()
{
if(P32==1&&P34==1&&P35==1&P37==1)
return 0xFF;
//无键按下时,返回0xFF
Delay(10);
//延时消抖
if(P32==0) return 0;
//KX0~KX3按下,分别返回0,1,2,3
if(P34==0) return 1;
{
uint16 i;
do
{
for(i=700;i;i--);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微处理器实验报告
ORG 0100H
MAIN: CLR E A
MOV SP,#60H
MOV TMOD,#20H
MOV TH1,#0FDH
MOV TL1,#0FDH
MOV SCON,#50H
MOV PCON,#00H
SETB TR1
MOV R7,#15
MOV DPTR,#0050H LOOP: MOV A,#00H
MOVC A,A+DPTR
MOV SBUF,A
JNB TI,$
CLR T I
INC DPTR
DJNZ R7,LOOP
SJMP $
END
ORG 0000H
2、编写一段程序,接收主机串行口发送来的字符,在单片机接收到‘X’的时候返回一个‘T’表示正确,否则返回一个‘F’表示错误。
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV SP,#60H
MOV TMOD,#20H ;设置T1 为方式2
MOV TH1,#0FDH ;设置波特率为9600
MOV TL1,#0FDH
MOV SCON,#50H ;设置串口为方式1
MOV PCON,#00H
SETB TR1 ;启动定时器1
LOOP: JNB RI,$
CLR R I
MOV A,SBUF
CJNE A,#'X',FSEND
MOV A,#'T'
AJMP SEND
FSEND: MOV A,#'F'
SEND: MOV SBUF,A ;回发数据
JNB TI,$
CLR T I
SJMP LOOP
END
3、采用串行口中断方式,实现与实验2相同的功能。
ORG 0000H
LJMP MAIN
ORG 0023H
LJMP ZRS232
ORG 0100H
MAIN: CLR E A
MOV SP,#60H
MOV TMOD,#20H
MOV TH1,#0FDH
MOV TL1,#0FDH
MOV SCON,#50H
MOV PCON,#00H
SETB ES
SETB TR1
SETB EA
SJMP $
ZRS232: JB RI,ZR
ZT: CLR TI
AJMP ZEND
ZR: CLR R I
MOV A,SBUF
CJNE A,#'X',FSEND
MOV A,#'T'
AJMP SEND
FSEND: MOV A,#'F'
SEND: MOV SBUF,A
ZEND: RETI
END
ORG 0000H
LJMP MAIN
五.实验结论
1.串行通信要设定共同波特率。
2.串行通信分为异步和同步两种,异步通信指发送和接受设备使用各自时钟控制数据的传输过程;同步通信指要建立发送方时钟和接受方时钟的直接控制。
3.串口通信难度比较大,要多花时间掌握。