华北理工大学轻工学院
delay(150); //延时2ms,即2ms执行一拍 }
P2 |= 0x0F; //关闭电机所有的相 }
4.2.3 延时程序
void delay(unsigned int cnt) //0.01ms延时函数 {
while (cnt--); }
void Delay_1ms(unsigned int DATA) //1ms延时函数 { }
unsigned int x,y; for(x=DATA;x>0;x--)
for(y=110;y>0;y--);
4.2.4 扫描程序
void Scan() {
//扫描L函数
//自动 if(S==1&&L==1&&Flag==0&&R==0&&D==0) { }
while(S==1&&Flag==1) {
if(L==1&&R==1&&D==0) {
-20-
Delay_1ms(700); if(L==1&&Flag==0) { }
Flag=1; R=1; D=0;
第4 章 软件设计
LED=1; qudong1(270) ; //开门 LED=0;
Delay_1ms(3000); R=0; D=1; }
if(L==0&&R==0&&D==1) {
LED=1; EA=1;
qudong2(270) ; EA=0; if(Flag1==1) { R=0; D=0; Flag1=0; Flag=0; LED=0; } }
} if(S==0)
{ R=0;
D=0;
Flag1=0; Flag=0; while(K1==1) {
LED=1;
qudong4(1) ;
//关门 //手动
-21-
华北理工大学轻工学院
K1=K;
}
while(G1==1) { LED=1; qudong5(1) ; G1=G;
} LED=0;
}
}
4.2.5 中断程序
void T0_time() interrupt 1 {
TH0=(65536-10000)/256; TL0=(65536-10000)%6; if(L==1&&D==1&&Flag1==1)
{ Delay_1ms(10); if(L==1) {
qudong3( beats); beats=0; LED=0;
Delay_1ms(3000); Flag1=0;
}
}
}
-22-
第5 章 仿真及调试
第5章 仿真及调试
单片机应用系统的开发过程,一般都包括如下几个过程:首先设计硬件电路,并在Altium Designer 09上仿真,仿真好了就完成硬件组装工作,然后进入软件设计、调试和硬件调试阶段。
5.1 仿真软件介绍
Altium Designer 09
Altium Designer 09 是protel dxp的升级版,支持windows7、windows Vista。Altium Designer 09的发布延续了连续不断的新特性和新技术的应用过程。这必将帮助用户更轻松地创建下一代电子设计。同时,我们将令Altium Designer更符合电子设计师的要求。
Altium Designer 提供了唯一一款统一的应用方案,其综合电子产品一体化开发所需的所有必须技术和功能。Altium Designer 在单一设计环境中集成板级和FPGA系统设计、基于FPGA和分立处理器的嵌入式软件开发以及PCB版图设计、编辑和制造。并集成了现代设计数据管理功能,使得Altium Designer成为电子产品开发的完整解决方案:一个既满足当前,也满足未来开发需求的解决方案。Altium Designer的板级设计功能可完全定义并实现设计中的物理元素。强大的规则驱动设计、版图和编辑环境可在直观高效的环境中完全控制设计中的各个方面。
在AltiumDesigner09中画出电路的原理图。接着根据原理图进行实物的制作。在制作的过程中,事先根据元件的大小排版布局,以单片机为中心,从简单.线路少的元件开始着手,围绕单片机把所有元件焊接完毕.最后,焊接完毕之后需要检查调试。
Keil C51
Keil C51是支持8051微控制器体系结构的Keil开发工具,适合每个阶段的开发人员,不管是专业的应用工程师,还是刚学习嵌入式软件开发的学生。Keil C51目前由ARM国内授权代理商提供技术支持和销售等相关服务。产业标准的Keil C编译器、宏汇编器、调试器、实时内核、单板计算机和仿真器,支持所有的251系列微控制器,帮助你如期完成项目进度。
Keil C51开发工具旨在解决嵌入式软件开发商面临的复杂问题。
当你开始一个新项目,只需简单的从设备数据库选择使用的设备,uVision IDE将设置好所有的编译器、汇编器、链接器和存储器选项。
-23-
华北理工大学轻工学院
包含大量的例程,帮助你着手使用最流行的嵌入式8051设备。
Keil uVision调试器准确地模拟8051设备的片上外围设备(IC、CAN、UART、SPI、中断、I/O端口、A/D转换器、D/A转换器和PWM模块)。模拟帮助你了解硬件配置,避免在安装问题上浪费时间。 此外,使用模拟器你可以在没有目标设备的情况下编写和测试应用程序。
当你准备在目标硬件上测试软件应用时,可以使用MON51、MON390、NONADI、或者FlashMON51目标监视器、ISD51 In-System调试器、ULINK USB-JTAG适配器在目标系统上下载并测试程序代码。
5.2 软件调试
首先,并不是把编好的程序直接烧进单片机,而先用Keil C51编译器进行调试。在使用Keil C51编译器时,对工程成功地进行编译(汇编)、连接以后,在主菜单中打开“调试”栏,点击“开始/停止调试模式”,即可进入软件模拟仿真调试状态,Keil C51内建了一个仿真CPU用来模拟执行程序,该仿真CPU功能非常强大,可以在没有硬件和仿真器的情况下进行程序的调试,但是在时序上,软件模拟仿真是达不到硬件的时序的。进入调试状态后,“调试”栏菜单项中原来不能用的命令现在已经可以使用了。调试程序看是否能仿真,如果运行正常再将在Keil C51编译器中调试好的程序烧写至单片机。
第一步调试是软件对所编程序的调试,看是否存在语法错误。一般来说这一步很容易实现。但是刚开始进行调试时一下子出来了10处错误。后来发现我将微机原理中的指令和单片机的指令搞混了。虽然有好多指令是通用的,但并不完全一致。如微机中的CMP比较指令在单片机中不可用。还有点格式上的错误就是在十六进制立即数的A、B、C、D、E、F前必须加上0,不然系统不认识。改过来之后顺利完成了这一步的调试。有些错误是因为敲程序时太快了,记忆符都写错,一改正错误提示减少了很多。
第二步是将程序利用汇编软件Keil对已经调试好的程序进行汇编在线调试,变成可执行的目标代码装入。Keil中可以进行模拟仿真,对软件进行单步调试。这可以让用户清晰的看到程序执行到何处,哪里出现错误。这一步主要看程序是否有逻辑上的错误,语法没错远远不代表着软件调试成功。在必要的时候可以设置端口状态和断点,并查看标志位和各寄存器的状态。如有逻辑错误,改正之后,再重新回到开始调试,直至逻辑错误消除为止。硬件调试与软件调试是不能完全分开的,许多硬件的错误是通过对软件的调试而发现和纠正的。
在进行单步执行时,定时程序在计数器溢出后就自动跳出,但在实际调试过程中,它却一直在循环程序中,不往下执行。后来经过程序的改进,解决了此困
-24-