单片机实验(DOC)
实验报告(单片机实验报告)

1 双字节无符号数加法例1: 双字节无符号数加法(R0 R1)+(R2 R3) → (R4 R5),R0、 R2、 R4存放16位数的高字节, R1、 R3、 R5存放低字节。
已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h)假设其和不超过16位。
请编程。
org 0000hLjmp startorg 0050hstart:mov R0,#93hmov R1, #79hmov R2,#25hmov R3, #0a4hmov A,R1ADD A,R3mov R5,Amov A,R0ADDC A,R2mov R4,Ass: jmp ssend2双字节无符号数减法例2: 双字节无符号数相减(R0 R1)-(R2 R3) → (R4 R5)。
R0、 R2、R4存放16位数的高字节, R1、 R3、 R5存放低字节,已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h);请编程。
同学自己可以设置被减数与减数数值org 0000hLjmp startorg 0050hstart:mov R0,#93hmov R1,#79hmov R2,#25hmov R3,#0a4hmov A,R1CLR CSUBB A,R3mov R5,Amov A,R0SUBB A,R2mov R4,Ass: jmp ssend3双字节数乘以单字节数例3: 利用单字节乘法指令,进行双字节数乘以单字节数运算。
若被乘数为16位无符号数, 地址为M1(30H) 和M1+1(31H)(低位先、高位后), 乘数为8位无符号数, 地址为M2(32H), 积由高位到低位存入R2、 R3和R4三个寄存器中。
30H,31H,32H内容 12H,34H,56H ;org 0000hLjmp startorg 0050hstart:mov 30h,#12hmov 31h,#34hmov 32h,#56hmov a,(30h)mov b,(32h)mul abmov R3,bmov R4,amov a,(31h)mov b,(32h)mul abadd A,R3mov R3,Amov A,bADDC A,#00hmov R2,Ass: jmp ssend4. 把8位二进制数转换为3位BCD例4: 利用除法指令把累加器A中的8位二进制数转换为3位BCD 数, 并以压缩形式存放在地址M1、 M2单元中。
单片机实验-数据排序实验模板.doc

单片机实验-数据排序实验模板.doc实验名称:数据排序实验实验目的:1.了解常见排序算法的基本原理及实现方法;2.掌握排序算法在单片机中的具体实现方法;3.培养学生对于单片机编程实践的能力。
实验器材:1. STC89C52RC单片机开发板1台;2. 4*4矩阵按键模块1个;3. 1602液晶屏幕模块1个;4. 杜邦线若干根;5. 电源线及适配器。
实验原理:排序算法是数据处理中最基本的算法之一,是计算机程序设计的基础问题之一。
常见的排序算法有冒泡排序、选择排序、插入排序、快速排序、堆排序、归并排序等。
它们各有特点和适用场景。
对于单片机而言,由于其处理能力有限,程序空间也有限制,因此选择排序算法的实现需要考虑以下几点:1.尽量缩短算法实现时间;2.尽量降低程序空间占用,以便为后续的功能留出空间。
下面我们以冒泡排序算法为例,在单片机上实现数据排序。
1.冒泡排序原理:比较相邻的元素,将较大的元素交换到右边。
2.冒泡排序步骤:①.从头开始,一次比较两个元素,如果它们的顺序错误就把它们交换过来;②.直到没有相邻元素需要比较时,排序完成。
3.冒泡排序算法实现:void BubbleSort(int *p,int len){int i,j;int temp=0;for(i=0;i<len;i++){for(j=0;j<len-i-1;j++){if(*(p+j)>*(p+j+1)){temp=*(p+j+1);*(p+j+1)=*(p+j);*(p+j)=temp;}}}}实验步骤:1.将矩阵按键模块和1602液晶屏幕模块连接到开发板上;2.打开keil软件,创建工程,编写程序代码;3.编译,烧录程序到STC89C52RC单片机开发板;4.调试测试,验证排序算法的正确性和效率。
实验结果:经过测试,程序能够正确实现冒泡排序算法进行数据排序,并在屏幕上输出排序后的结果。
排序效率较高,排序100个以上数据的时间在200ms左右。
单片机原理实验报告(详细)

湖南城市学院实验报告2018-2019 学年上学期姓名:***班级学号:******实验课程:单片机原理及应用实验室名称:电子工程实验室湖南城市学院信息与电子工程学院实验中心印制实验项目名称:实验一指示灯和开关控制器实验一、实验目的及要求1、学习51单片机I/O基本输入/输出功能,掌握汇编语言的编程与调试方法;2、熟悉proteus软件,了解软件的结构组成与功能;3、学会在ISIS模块中进行汇编程序录入、编译和调试;4、理解单片机程序控制原理,实现指示灯/开关控制器的预期功能。
二、实验原理实验电路原理图如图1所示,图中输入电路由外接在P3口的8只拨动开关组成;输出电路由外接在P2口的8只低电平驱动的发光二极管组成。
此外,还包括时钟电路、复位电路和片选电路。
图1 实验原理图在编程软件的配合下,要求实现如下指示灯/开关控制功能:程序启动后,8只发光二极管先整体闪烁3次(即亮→暗→亮→暗→亮→暗,间隔时间以肉眼可观察到为准),然后根据开关状态控制对应发光二极管的灯亮状态,即开关闭合相应灯亮,开关断开相应灯灭,直至停止程序运行。
软件编程原理为:(1)8只发光二极管整体闪烁3次亮灯:向P2口送入数值0;灭灯:向P2口送入数值0FFH;闪烁3次:循环3次;闪烁快慢:由软件延时时间决定。
(2)根据开关状态控制灯亮或灯灭开关控制灯:将P3口(即开关状态)内容送入P2口;无限持续:无条件循环。
程序流程图如图2所示。
图2 实验程序流程图三、实验仪器设备及装置(1)硬件:电脑一台;(2)仿真软件:Proteus;(3)编程软件Keil uVision4。
其中,仿真软件ISIS元件清单如表1所示。
表1 仿真软件ISIS元件清单四、实验内容和步骤(一)实验内容:(1)熟悉ISIS模块的汇编程序编辑、编译与调试过程;(2)完成实验的汇编语言的设计与编译;(3)练习ISIS汇编程序调试方法,并最终实现实验的预期功能。
(二)实验步骤:(1)提前阅读与实验相关的阅读材料;(2)参考指示灯/开关控制器的原理图和实验的元件清单,在ISIS中完成电路原理的绘制;(3)参考程序流程图在Keil uVision4中编写和编译汇编语言程序;(4)利用ISIS的汇编调试功能检查程序的语法和逻辑错误;(5)观察仿真结果,检验与电路的正确性。
单片机实验报告

单片机实验报告一、实验目的本次单片机实验的主要目的是通过实际操作和编程,深入了解单片机的工作原理和应用,掌握单片机系统的设计、开发和调试方法,提高自身的动手能力和解决问题的能力。
二、实验设备1、单片机开发板2、计算机3、编程软件(如 Keil)4、下载器5、示波器6、万用表三、实验内容1、点亮 LED 灯通过编写简单的程序,控制单片机的引脚输出高低电平,从而点亮或熄灭连接在该引脚上的 LED 灯。
这是单片机最基础的操作之一,旨在熟悉单片机的编程环境和引脚控制方式。
2、数码管显示利用单片机驱动数码管,实现数字的显示。
需要了解数码管的工作原理和驱动方式,通过编程控制数码管的段选和位选信号,显示不同的数字。
3、按键输入设计按键电路,通过读取按键的状态,实现对单片机系统的输入控制。
例如,通过按键切换不同的显示模式或控制其他外部设备。
4、定时器/计数器应用使用单片机的定时器/计数器功能,实现定时、计数等操作。
例如,设计一个定时闪烁的 LED 灯,或者通过计数器统计外部脉冲的个数。
5、串口通信实现单片机与计算机之间的串口通信,将单片机采集到的数据发送到计算机上进行显示和处理,或者接收计算机发送的指令对单片机系统进行控制。
四、实验原理1、单片机的基本结构单片机通常由中央处理器(CPU)、存储器(包括程序存储器和数据存储器)、输入输出接口(I/O 口)、定时器/计数器、中断系统等部分组成。
2、编程语言本次实验采用 C 语言进行编程。
C 语言具有简洁、高效、可移植性强等优点,非常适合单片机的开发。
3、引脚功能单片机的引脚分为电源引脚、时钟引脚、复位引脚、I/O 引脚等。
通过对这些引脚的合理配置和控制,可以实现各种功能。
4、数码管驱动原理数码管分为共阴极和共阳极两种类型。
通过控制数码管的段选和位选信号,可以使数码管显示不同的数字和字符。
5、按键检测原理按键通常采用上拉电阻或下拉电阻的方式连接到单片机的I/O 引脚。
单片机定时器实验报告doc

单片机定时器实验报告篇一:单片机实验报告——定时器实验四定时器实验自动化121班 36 张礼一.实验目的掌握定时器的工作原理及四种工作方式,掌握定时器计数初始值的计算,掌握如何对定时器进行初始化,以及程序中如何使用定时器进行定时。
二.实验仪器单片机开发板一套,计算机一台。
三.实验任务编写程序,使用单片机开发板上8位共阴极数码管的其中一位来显示0~9这九个字符,先从“0”开始显示,数字依次递增,当显示完“9”这个字符后,又从“0”开始显示,循环往复,每1秒钟变换一个字符,1秒钟的定时时间必须由定时器T0(或T1)提供。
开发板上的8位共阴极数码管与单片机的输入输出端口P1的硬件接线如图4-1所示,单片机P1口的8条数据线通过J3端子同时连接到 2片74HC573D锁存器的输入端,数码管的各个同名端分别连接后再与锁存器U2的8个输出端相连,每一位数码管的位选端分别与锁存器U3的8个输出端相连。
两片锁存器的输出使能端OE都恒接地,使得锁存器的内部数据保持器输出端与锁存器的输出端保持接通。
而U2的锁存使能端LE由P2.1控制,所以P2.1是段锁存;U3的锁存使能端LE由P2.0控制,所以P2.0是位锁存。
当锁存使能端为“1”时,则锁存器输入端的数据传送到输出端;当锁存使能端为“0”时,锁存器输入端的数据则不能传送到输出端;因此段码和位码通过锁存器分时输出。
汇编语言程序流程如图4-2:四.实验步骤:1.数码管的0~9的字型码表如下:2.参考图4-2所给的程序流程图编写实验程序。
(注:以下程序为两位60秒计数程序)#include sbit wei=P2^0; sbit duan=P2^1;char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};int i,j,k,num,shi,ge; void delay(int a) {for(i=0;i void display(int shi,int ge){wei=1;P1=0xfe;wei=0;duan=1;P1=table[shi];duan=0;wei=1; delay(5);P1=0xfd;wei=0; duan=1;P1=table[ge];duan=0; }void main() {TMOD=0x01;TH0=(65536-45872)/256; TL0=(65536-45872)%256; EA=1; ET0=1; TR0=1; num=0; while(1) {delay(5);display(shi,ge); } }void T0_time() interrupt 1 {TH0=(65536-45872)/256; TL0=(65536-45872)%256; k++; if(k==20) { k=0; num++;if(num==60)num=0; shi=num/10; ge=num%10; } }3.实验接线,如图4-1。
湖南工业大学电自专业89s51单片机实验报告(DOC)

实验一二进制转换成十进制实验一、实验设备1.THGQC-1型嵌入式单片机实验开发系统-套。
2.PC机一台。
二、实验目的掌握汇编语言设计和实验步骤,熟悉在KEIL环境下观察内部RAM 的方法。
三、实验内容单片机中的数值有各种表达方式,这是单片机的基础。
掌握各种数制之间的转换是一种基本功。
本实验内容是将一个给定的一字节二进制数,通过编程将其转换成十进制码。
四、实验步骤1)启动PC机,打开KEIL软件,软件设置为模拟调试状态。
在所建的Project文件中添加TOBCD.ASM文件,打开TOBCD.ASM文件,阅读、分析、理解程序,编译程序进行调试(如何建立工程请看附录说明)2)打开RAM观察窗口,根据示例程序注释设置断点,运行程序。
程序具体功能是将累加器A的值拆为三个BCD码,并存入RESULT开始的三个单元,例程A赋值#0ffh。
打开MEMORY WINDOW数据窗口,(在MEMORY#1中输入D:30H)观察RAM地址30H、31H、32H的数据变化30H更新为02,31H更新为05,32H更新为05。
3)修改源程序中给累加器A的赋值,重复实验,观察实验效果。
4)打开CPU寄存器窗口,选择单步或跟踪执行方式运行程序,观察各寄存器的变化可以看到程序执行的过程,加深对实验的了解。
五、实验程序参考框图六、实验程序RESULT EQU 30HORG 0000HJMP STARTORG 0100HSTART:MOV SP,#40HMOV A,#0FFHCALL BINTOBCDNOP ;此处设置断点,察看RAM 30H,31H,32HLJMP $BINTOBCD:MOV B,#100DIV ABMOV RESULT,A ;除以100得百位数MOV A,BMOV B,#10DIV ABMOV RESULT+1,A ;余数除以10得十位数MOV RESULT+2,B ;余数为个位数RETEND七.实验程序编译和结果分析图1为keil2程序编辑器的编译窗口。
单片机实验
单片机实验第二次实验:图见实验题1.P1.0~P1.7这八个发光二极管全部点亮#include#define uchar unsigned char#define uint unsigned intsbit greenLed=P1^0;Delay(uint cnt){ uchar i;do{for(i=0;i<165;i++);}while(cnt--);}main(){ while(1){ greenLed=0;Delay(1000);greenLed=1;Delay(1000);}}2. P1.0~P1.7这八个发光二极管循环点亮#include delay(unsigned char cnt){ unsigned int i;do{for(i=0;i<6000;i++);}while(cnt--);}main(){ unsigned char a;P1=~a;while(1){if(a!=0){ delay(5);a<<=1;P1=~a;}else{a=0x01;P1=~a;}}}3.通过外部中断控制八盏灯分别右移,左移,闪烁,双灯同时左移。
#include#define uchar unsigned charuchar code LedTable[]= {0x03,0x0c,0x30,0xc0};uchar led_flag = 4;uchar a; Delay(uchar cnt){ unsigned int i;do{ for(i=0;i<6000;i++);}while(cnt--);}void Led_rr(void)//led右移函数{ uchar i;for(i=0;i<8;i++){ if(a == 0) a= 0x80;P1 = ~a;a >>= 1;}}void Led_rl(void)//led左移函数{ uchar i;for(i=0;i<8;i++){ if(a == 0) a= 0x01;P1 = ~a;a <<= 1;Delay(10);}}void Led_spark(void){ P1 = 0xff;Delay(10);P1 = 0;Delay(10);}void Led_lr_doble(){ uchar i;for (i=0;i<4;i++){ P1= ~LedTable[i];Delay(10);}}void int1(void) interrupt 2 //中断服务函数{ led_flag++;if(led_flag >= 3) led_flag = 0;}void main(void){ EA = 1;EX1 = 1;IT1 = 1;while(1){ if(led_flag ==4){ Led_spark();}if(led_flag == 0){ Led_rl();}if(led_flag == 1){ Led_rr();}if(led_flag == 2){ Led_lr_doble();}}第三次实验:1.设单片机的=12MHz,要求用定时器/计数器T0以方式1在P1.0脚上输出周期为4ms的方波。
单片机实验报告范文
单片机实验报告范文一、实验目的本实验的目的是通过学习单片机的基本原理和使用方法,掌握单片机在各个实际应用中的基本技能。
二、实验器材及原理1.实验器材:STC89C52单片机、电源、晶振、按键、LED灯、蜂鸣器等。
2.实验原理:单片机是一种微处理器,能够完成各种复杂的功能。
通过学习单片机的工作原理和编程方法,可以控制各种外围设备,实现不同的功能。
三、实验内容及步骤1.实验一:点亮LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)编写程序,点亮LED灯。
2.实验二:按键控制LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)将按键和LED灯与单片机相连。
(3)编写程序,实现按下按键控制LED灯亮灭。
3.实验三:数码管显示步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)将数码管与单片机相连。
(3)编写程序,将数字输出到数码管上显示。
4.实验四:定时器应用步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)编写程序,实现定时器功能。
四、实验结果及分析1.实验一:点亮LED灯LED灯成功点亮,证明单片机与外部设备的连接正常。
2.实验二:按键控制LED灯按下按键后,LED灯亮起,松开按键后,LED灯熄灭。
按键控制LED 灯的效果良好,说明单片机的输入输出功能正常。
3.实验三:数码管显示数码管成功显示数字,说明单片机能够实现数字输出功能。
通过程序设计,可以实现数码管显示不同的数字。
4.实验四:定时器应用定时器正常运行,能够实现精确的定时功能。
通过调节定时器的参数,可以实现不同的定时功能。
五、实验总结通过本次实验,我们学习了单片机的基本原理和使用方法。
通过掌握单片机的编程技巧,我们能够实现各种复杂的功能,如控制LED灯、按键控制、数码管显示等。
这些技能对于日常生活和工程设计都具有很大的实用性。
在实验过程中,我们遇到了各种问题,如电路连接错误、程序编写错误等。
盐城工学院单片机实验指导书.doc
单片机原理及接口技术实验指导书周云龙编写盐城工学院电气工程学院二○一五年四月实验一KEIL集成开发环境应用实验一、实验目的1.掌握C51开发环境keil软件项目创建方法2、汇编程序编写2.C51程序编写3、主函数、自定义函数和中断函数编写二、实验备件PC和单片机IDE集成开发软件三、实验要求1、建立一个汇编程序工程2、汇编工程调试3、建立一个C语言程序工程4、C语言工程调试实验二Proteus单片机系统仿真实验一、实验目的1.掌握Proteus 界面功能2、原理图绘制方法2.住址仿真调试3、Proteus与Keil联调二、实验备件PC、单片机IDE集成开发软件和Proteus仿真软件三、实验步骤1、学习Proteus软件2、绘制教材中第150页上图5-73、Keil与Proteus联调实验三单片机最小系统的熟悉一、实验目的在进行其他硬件实验之前,先熟悉实验装置的核心模块——单片机最小系统模块。
掌握该实验模块的电路原理和接口的使用方法。
1.掌握单片机振荡器时钟电路及CPU工作时序;掌握复位状态及复位电路设计;掌握单片机各引脚功能及通用I/O口的使用;掌握单片机基本指令的使用。
2.掌握uVision3 IDE集成开发环境,Proteus仿真软件和STC单片机下载软件ISP的使用。
3.将仿真现象和实验结果进行对比,体会仿真软件的用处。
二、实验设备1.51仿真器或者串口线2.单片机系统板三、实验要求1.连接实验电路,编写简易单片机汇编程序达到下述工作要求:P3.3口做输入口,外接一脉冲,每输入一个脉冲,P1口按十六进制加一输出,编写程序使P1口接的8个发光二极管L0—L7按16进制加一的方式点亮发光二极管。
2.将编写的程序经过编译后在uVision3 IDE软件中生成*.hex机器语言,通过ISP将*.hex下载到单片机芯片中,观察实验现象。
3. 用Proteus仿真软件画出实验电路图,将在uVision3 IDE软件中生成*.hex 下载到Proteus仿真电路图中的单片机芯片中,观察实验现象,比较该现象和在实验台上的现象是否相同。
单片机实验报告(相当不错,有具体实验结果分析哦)
学生姓名:学号:专业班级:实验类型:□ 验证□ 综合□ 设计□ 创新实验日期:实验成绩:实验一 I/O 口输入、输出实验地点:基础实验大楼A311一、实验目的掌握单片机P1口、P3口的使用方法。
二、实验内容以P1 口为输出口,接八位逻辑电平显示,LED 显示跑马灯效果。
以P3 口为输入口,接八位逻辑电平输出,用来控制跑马灯的方向。
三、实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验说明和电路原理图P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。
因为内部上拉电阻阻值是20K~40K,故不会对外部输入产生影响。
若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。
本实验需要用到CPU模块(F3区)和八位逻辑电平输出模块(E4区)和八位逻辑电平显示模块(B5区)。
2学生姓名:学号:专业班级:实验类型:□ 验证□ 综合□ 设计□ 创新实验日期:实验成绩:五、实验步骤1)系统各跳线器处在初始设置状态。
用导线连接八位逻辑电平输出模块的K0 到CPU 模块的RXD(P3.0 口);用8 位数据线连接八位逻辑电平显示模块的JD4B 到CPU 模块的JD8(P1 口)。
2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。
编译无误后,下载程序运行。
3)观察发光二极管显示跑马灯效果,拨动K0 可改变跑马灯的方向。
六、实验参考程序本实验参考程序:;//******************************************************************;文件名: Port for MCU51;功能: I/O口输入、输出实验;接线: 用导线连接八位逻辑电平输出模块的K0到CPU模块的RXD(P3.0口);;用8位数据线连接八位逻辑电平显示模块的JD2B到CPU模块的JD8(P1口)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录第一章模块化单片机实验仪的结构 (1)1.1主板结构 (1)1.2主板扩展电路接口的组成 (1)第二章 TMD-2软件介绍 (2)2.1软件运行的2种方式 (2)2.2 Keil仿真器使用说明 (2)2.3 在系统编程软件(Flash Magic)的使用 (8)2.4 串口调试助手的使用 (11)第三章 TMD-2实验 (13)实验一 I/O口实验 (13)实验二定时器实验 (16)实验三外部中断实验 (18)实验四单片机与PC机串口通讯实验 (20)第一章模块化单片机实验仪的结构1.1主板结构TMD-2模块化单片机实验仪主板的组成:CPU:AT89C51(或 89C51RD2HXX) 工作频率:6MHzRAM:62256(32K×8)地址范围:0000H~7FFFHI/0口(输入输出设备): 8 个拨动开关,8 个 LED 灯数据显示设备: 1个共阴极数码管,1个两行16字符的液晶显示器逻辑笔输出时钟频率(YCLK):1MHz系统电源:+5V/2A,+12V/0.5A,-12V/0.5A主板结构框图如图1.1所示:图1.1 TMD-2模块化单片机实验仪主板示意图1.2主板扩展电路接口的组成图1.2器件片选地址分配图第二章 TMD-2软件介绍2.1软件运行的2种方式1.Keil仿真器调试法2.在系统编程法2.2 Keil仿真器使用说明一、建立 keil 项目:打开 keil 软件,如图2.1所示。
图2.1 keil软件界面二、鼠标单击创建新项目下拉菜单 Project/New Project…,如图2.2所示。
图2.2 keil下创建新项目选择新建项目的名字和保存路径,如图2.3所示。
图2.3 保存项目文件三、选择单片机型号(如图2.4所示,根据单片机的生产厂商查找)。
图2.4 选择单片机型号四、系统询问是否加载标准启动代码(如图2.5所示),选择“否”。
图2.5 是否加载标准启动代码五、加入汇编语言源程序文件(xx.a51),建立 xx.a51 文件有两种方法:方法一(xx.a51文件己经存在):在 Source Group1 上单击鼠标右键,选择“Add Files to Group source Group1”,然后选择所要添加的文件,如图2.6所示。
图2.6 添加文件到工程方法二(xx.a51文件不存在):1.新建空白文件,如图2.7所示。
2.将空白文件另存为 xx.a51文件,存放在与工程文件同目录下,如图2.8、图2.9所示。
3.将xx.a51 文件加载到项目中(同方法一)。
图2.7 新建空白文件图2.8 新建空白文件图2.9 将空白文件另存为 .a51汇编语言源程序文件六、编辑程序,双击.a51文件,显示.a51 的编辑空间,如图2.10所示。
图2.10 编辑 .a51汇编程序文件七、单击Project->Build Target或单击快捷键编译程序,如图2.11所示。
图2.11 编译 .a51汇编程序八、观察编译输出窗口。
在最下面的 build Output窗口观察错误(Errors)、警告(Warnings)和生成.hex 文件等信息。
九、设置项目1.鼠标单击Project/Options for Target 'Target l'或单击快捷按钮。
2.在Output选项卡中将Create HEX File 选项勾上,如图2.12所示。
3.在Target选项卡中设置TMD-2 的主板晶振频率为6M,如图2.13所示。
4.在Debug选项卡中设置仿真选项:选择Use:Keil Monitor-51 Driver;选中Load Application at Startup,如图2.14所示。
5.在Settings选项卡中设置串口和波特率:串口选择 COM3,波特率选择 9600,RST,DTR 均选择 Active,Catch Options全选择Stop Program Execution with Serial Interrupt 不能选择,如图2.15所示。
图2.12 设置生成HEX文件界面图2.13 设置主板晶振频率图2.15 设置调试选项十、开始调试运行程序1.将TMD-2右上方仿真器开关拨到“仿真器”处。
2.检查电源线和串口线,上电。
3.鼠标单击菜单 Debug/Start/Stop Debug Session,或单击快捷按钮,如图2.16、图2.17所示。
图2.15 设置串口选项图2.16 打开调试窗口图2.17 程序调试界面十一、keil 软件的常用快捷按钮功能::程序复位按钮。
:程序运行按钮。
:停止运行。
:Step In,单步按钮1,程序单步执行到子程序时,跟踪进子程序执行。
: Step Over 单步按钮2,程序单步执行到子程序时,把子程序当一步执行。
:Run to Cursor Line 执行到光标处,表示程序运行到光标所在行的位置十二、再次点击下拉菜单 Debug/start/stoP Debug session或快捷按钮,退出调试。
特别注意:1,用 keil 仿真器调试程序时不要按主板上的复位键。
按下主板上的复位键会导致下载到仿真器的程序消失,若要再进行仿真就必须先退出仿真环境,然后重新联机进入。
2,如果要程序返回初始状态,只需点击即可。
观察光标符号,确认已回到程序起始位置,此时主板上的硬件资源状态也已回到复位状态。
2.3 在系统编程软件(Flash Magic)的使用一、在系统编程简介进行单片机实验或开发时,通常需要借助编程器将调试好的目标程序写入到单片机内部程序存储器中。
普通的编程器价格从几百元到几千元不等。
另外,在开发过程中,程序每改动一次就要拔下电路板上的芯片编程后再插上,也比较麻烦。
随着单片机技术的发展,出现了可以在系统编程(ISP)的单片机。
ISP一般是通过单片机的串行接口对内部的程序存储器进行编程,如PHILIPS公司的P89C51RX+、P89C51RX2 单片机;ATMEL公司的AT89S8252单片机;WINBOND公司的W78E516等。
利用在系统编程(ISP)的单片机,单片机的实验和开发不需要编程器,单片机芯片可以直接焊接到电路板上,调试结束即成成品,甚至可以远程在线升级单片机中的程序,使得单片机应用系统的设计、生产、维护、升级等环节都发生了深刻的变革。
实验仪附带有一片PHILIPS公司新推出的高性能8位单片机P89C51RD2XX,该单片机与MCS-51单片机引脚及指令集完全兼容。
该单片机最大的优点是:其片内具有64KB闪存程序存储器,1KB的片内数据存储器,且同PC机连机后,可将目标程序直接写入片内程序存储器中,不再需要专用的编程器。
下面介绍其编程方法。
①在断电的情况下,将P89C5IRD2XX单片机插入实验仪通用单片机插座并锁紧。
将实验仪与单片机之间的串行通信电缆连接好,通信电缆一端接在PC的串口,另一端接实验仪串行口。
②接通跳线DZ4,使串行通信线RXD与RS232电平转换电路相连。
③通电,为了让系统能够达到稳定状态,最好等待1~2秒钟,然后将实验仪上的下载开关拨到“下载”位置。
按RESET按钮(确保有效,应至少保持1秒钟)使单片机复位后,即可按下面的说明编程。
二、在系统编程软件的使用在PC机上运行编程软件 Flash Magic,软件运行后屏幕界面如图2.18所示。
图2.18 Flash Magic主屏幕屏幕上方为主菜单,主菜单下方的屏幕被分成了5个区,分别标有1、2、3、4、5。
下面对主菜单及编程方法做一说明。
(1)主菜单主菜单有4个子菜单,分别是File、ISP、Options和Help。
●File子菜单项:包括打开和存储一个“HEX”文件,打开和存储一个设计文件和退出FlashMagic操作。
●ISP子菜单项:包括芯片空白检查;读保密位;读芯片标志字节;显示存储器内容;擦除FLASH等操作。
●OPtions子菜单项:包括复位和高级选项两项操作,这两项操作在我们的实验系统中一般不用,所以这里不做介绍。
●Help子菜单:包括查看Flash Magic的用户手册;可直接通过网络连接到Flash Magic 的主页或连接到Philips半导体公司的主页查看相应信息。
在对一片Philips的89C51RD2XX进行编程时,一般按屏幕提示进行5步操作:第一步:通讯设置(屏幕1区)●设置通讯口:可以通过下拉菜单在COM1-COM4中进行选择,也可以在输入框中直接输入所连接的通讯口,在我们的PC机中,选择COM3。
●波特率设置:可以通过下拉菜单进行选择,TMD-2实验系统选择9600的波特率。
●振荡频率设置:TMD-2实验系统中应输入6.000MHz。
●器件选择:可以通过下拉菜单进行选择。
TMD-2实验系统随机配送一片P89C51RD2XX,在选择芯片时先仔细看清楚芯片型号是89C5IRD2XX还是89C5IRD2HXX,请不要选错。
第二步:擦除在屏幕的2区列出了所选器件的各个Flash 块,用鼠标选中要擦除的Flash块。
在执行擦除操作或编程操作时,就会将所选的 Flash 块擦除。
注意:当擦除整个 Flash 时芯片的自举指针(Boot Vector)和状态字节(Status byte)将被设置成初始值。
除89C51RX +系列芯片以外,在擦除整个Flash时保密位也将被擦除。
第三步:选择HEX文件(屏幕3区)选择和打开一个HEX文件可以有三种方法;①在文本框中键入HEX文件的路径和文件名。
②点击 Browse(浏览)按扭,查找HEX文件。
③在主菜单的File子菜单下用 Open打开一个HEX文件。
第四步:操作选项(屏幕4区)屏幕4区是编程时的一些选项。
●编程后校验:这项功能一般是需要的。
●填充用不到的Flash区:这项功能是在选择了一个 HEX文件后,将该HEX文件用不到的存储区用00H填满。
●产生校验和:这项功能是在选择了一个 HEX 文件后,Flash Magic 在这个 HEX 文件所用到的每一块 Flash 块的最高地址写入一个值,这个值使这个 Flash块的校验和为55H。
●执行:如果选择该项功能后,将在编程完成后自动执行固化好的程序。
注意:在我们的系统中由于使用硬件复位操作,这项功能将不起作用。
●保密位:在你的程序尚未完全调试好以前,所有保密位不要选。
第五步:编程(屏幕5区)在屏幕的第五区只有一个按扭:“Start",按下这个按扭将根据所选顺序执行如下操作:●擦除 FLAS块●对 HEX 文件编程●校验●填充没有用到的FLASH●产生校验和的值●写时钟位●写保密位●执行固化好的程序操作完成后,将显示出“Finished...”并显示出对HEX文件编程所用的时间。