单片机程序调试小技巧
- 格式:pdf
- 大小:1.05 MB
- 文档页数:16
单片机指令的错误处理方法在单片机的开发过程中,指令的正确执行是保证系统正常工作的关键。
然而,由于硬件故障、编程错误或者外部干扰等原因,指令的执行可能会出现错误。
针对这种情况,开发人员需要采取一些方法来处理指令错误,以确保系统的可靠性和稳定性。
本文将介绍一些常用的单片机指令错误处理方法。
一、错误检测与纠正技术错误检测与纠正技术是处理指令错误的基础。
通过在指令执行过程中添加校验位或冗余码等信息,可以检测和纠正指令传输中的错误。
常用的错误检测与纠正技术包括奇偶校验、循环冗余校验(CRC)、海明码等。
奇偶校验是一种简单有效的错误检测技术。
通过在指令传输的每个字节中添加一个奇偶校验位,当传输过程中出现错误时,接收端可以通过奇偶校验位来检测错误的位置。
如果发现错误,可以采取重新传输或纠正错误的措施。
循环冗余校验(CRC)是一种广泛应用的错误检测技术。
通过在指令传输的数据帧尾部添加一个校验码,接收端可以通过计算校验码来检测数据传输中的错误。
CRC可以快速检测错误,并且可以纠正一部分错误,提高了系统的可靠性。
海明码是一种高级的错误检测和纠正技术。
它通过在指令传输的数据中添加冗余位,可以检测和纠正多个错误。
海明码广泛应用于存储器、通信和计算机系统等领域,提供了高度可靠的错误检测和纠正功能。
二、异常中断处理在单片机的指令执行过程中,可能会出现一些异常情况,如除零错误、溢出错误、非法指令等。
这些异常情况会导致系统崩溃或者产生错误结果,因此需要进行异常中断处理。
异常中断处理是通过响应异常事件,并采取相应的措施来保证系统的正常运行。
当发生异常情况时,单片机会跳转到事先定义好的异常处理程序,并通过该程序来处理异常事件。
异常处理程序可以采取恢复现场、清除错误状态、重新执行指令等方式来处理异常情况,以确保系统的稳定性和正确性。
三、错误处理算法和逻辑在单片机的程序开发过程中,可以通过编程来实现一些错误处理算法和逻辑,以处理指令错误。
单片机使用中的错误排查与修复技巧单片机(Microcontroller)是一种集成了中央处理器、存储器和输入输出设备的微型计算机系统,常用于嵌入式系统中。
在单片机的使用过程中,由于硬件或软件问题,可能会出现各种错误。
这篇文章将介绍一些常见的错误,以及排查和修复这些错误的技巧。
一、硬件错误排查与修复技巧1. 电源问题:当单片机无法正常工作时,首先应检查电源问题。
可能的原因包括电源电压不稳定、电源连接错误或损坏的电源线。
排查方法:- 使用万用表测量电源电压,确保其在指定范围内。
- 检查电源连接是否正确,确认是否存在接触不良或松动的接线。
- 更换损坏的电源线。
修复方法:- 确保使用稳定可靠的电源。
- 确认电源线连接正确、可靠。
- 使用去噪电容或稳压电源解决电压波动问题。
2. 时钟问题:时钟信号是单片机正常工作的重要参考信号。
若时钟信号不正确或不稳定,单片机可能无法正常工作。
排查方法:- 检查时钟源选择是否正确。
- 使用示波器测量时钟信号,确认其频率和占空比是否满足要求。
- 检查时钟电路的连接是否存在接触不良或损坏。
修复方法:- 确认时钟源选择正确。
- 检查时钟电路的连接,确保其可靠性。
- 使用时钟缓冲器或外部晶振解决时钟不稳定问题。
3. 引脚问题:在单片机的使用过程中,常常会出现引脚连接错误或引脚损坏的问题。
这可能导致严重的功能故障或者不可预测的工作情况。
排查方法:- 检查引脚连接是否正确,确认是否存在接触不良或者误连的情况。
- 使用万用表或示波器测量引脚的电平,确认其是否符合预期。
- 在其他引脚上测试相同功能,以确定引脚是否损坏。
修复方法:- 修正引脚连接错误,确保连接可靠。
- 更换损坏的引脚。
- 使用外部元件(如继电器)重新分配引脚功能。
二、软件错误排查与修复技巧1. 编译错误:编译错误是开发单片机软件时常遇到的问题,通常是由于语法错误、头文件引用错误等引起的。
排查方法:- 仔细阅读编译错误信息,确定具体的错误原因。
S12单片机BDM调试器使用技巧摘要:全国大学生“飞思卡尔杯”智能汽车竞赛推荐使用Freescale公司的M C9S12系列单片机为主控芯片;有USB接口的TTBDM调试器是主要软件调试工具。
TTBDM调试器通过USB接口与PC通信,BDM接口与目标CPU通信,实现嵌入式软件的在线调试。
根据往届车模竞赛中参赛者遇到的一些问题和本中心在长期支持国内S12系列单片机用户中积累的经验,总结出BDM调试器的用法和注意事项,提供一些使用技巧,以求对参赛者和S12产品开发工程师有所帮助。
关键词: 9S12单片机;BDM;TTBDM第四届全国大学生“飞思卡尔杯”智能气车竞赛推荐采用最新的MC9S12XS1 28(以下简称XS128)单片机作为主控芯片,替代MC9S12DG128。
XS128是Free scale公司推出的S12系列单片机中的一款增强型16位单片机。
片内资源丰富,接口模块有SPI、SCI、IIC、A/D、PWM等常见模块,在汽车电子应用领域具有广泛用途。
XS128和以往大赛使用的S12DG128系列单片机一样,调试接口都是使用Freescale公司传统的BDM(Background Debug Module)接口。
1 MC9S12XS128单片机介绍(1)CPU:增强型16位HCS12 CPU,片内总线时钟最高40 MHz;(2)片内资源:8 KB RAM、128 KB程序闪存、2 KB数据闪存;(3)串行接口模块:SCI、SPI;(4)脉宽调制模块(PWM)可设置成4路8位或者2路16位,逻辑时钟选择频率宽;(5)1个16路12位精度A/D转换器;(6)控制器局域网模块(CAN);(7)增强型捕捉定时器。
MC9S12XS128单片机有112、80和64引脚3种封装形式。
80-pin封装的单片机没有引出用于扩展方式的端口,仅引出了一个8路A/D接口。
竞赛可使用1 12或80引脚封装器件。
2 BDM接口和使用BDM调试器内部有一个8位的MC9HC08JB16单片机,该单片机有USB接口,可与PC机信息交互。
KEIL调试高级技巧在调试状态,Debug 菜单项中的命令可以使用了,有关编译的工具栏按钮消失了,出现了一个用于运行和调试的工具栏,Debug 菜单上的大部份命令都有相应的快捷按钮。
从左到右依次是复位、运行、暂停、单步跟踪、单步、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮命令;然后按一下图示第二个“运行”按钮。
连接上相关的实验资源,本实验用一条8PIN的数据排线把实验仪的CPU部份的P1口(JP44)连接到八路指示灯部份的JP32。
这时你会看到实验仪的八个红色LED,轮流点亮,表示运行成功,也可以查看相关的变量和参数,非常方便。
⒈单步跟踪运行使用菜单Debug->Step 或上图第四个单步运行按钮或使用快捷键 F11 可以单步跟踪执行程序,在这里我们按下 F11 键,即可执行该箭头所指程序行,每按一次 F11,可以看到源程序窗口的左边黄色调试箭头指向下一行,如果程序中有Delay延时子程序,则会进入延时程序中运行。
⒉单步运行如果Delay 程序有错误,可以通过单步跟踪执行来查找错误,但是如果 Delay 程序已正确,每次进行程序调试都要反复执行这些程序行,会使得调试效率很低,为此,可以在调试时使用 F10 来替代 F11(也可使用菜单 Step Over 或相应的命令按钮),在 main 函数中执行到 Delay时将该行作为一条语句快速执行完毕。
为了更好的进行对比,我们重新进入仿真环境,将反汇编窗口关闭,不断按F10 键,可以看到在源程序窗口中的左边黄色调试箭头不会进入到延时子程序。
⒊全速运行点击工具栏上的“运行”按钮或按F5 键启动全速运行,全速执行程序,此时用户板上的 P1 口所接 LED 以流水灯状态显示。
⒋暂停点击工具栏上的按钮,此时用户板上的P1 口所接 LED 停止以流水灯状态显示,只有一个 LED 灯点亮(取决于暂停前的 P1 的值)。
一.实验目的课程标志性内容的设计理解和综合运用,鼓励独立性设计和功能扩展的创新实践。
二.实验设计功能:分离模块要求:(这个模块要求用汇编写)1)设计一个可以显示1234的显示电路,并利用单片机实现。
2)利用按键切换,然后显示I0Y3)按键切换的动作,全部用串口进行通信。
设计一个开关,当进行切换后,程序再进入主要要求。
主模块要求:(这个模块可以用汇编,也可以用C语言写,要是用汇编,老师说基本就给优的了,要是用C语言,得有创新点才能给优)(1) 显示准确的北京时间(时、分),可用24小时制式;(2) 随时可以调校时间。
(3) 增加公历日期显示功能(月、日);(4) 随时可以调校月、日;(5) 允许通过转换功能键转换显示时间或日期。
(6) 所有按键需要通过串口自发自收来调校各种功能。
调试过程:1.串口,时钟等的设置参考了老师给的C语言版的例程。
2.在按键输入判断时,由于一开始遗忘了延时子程序的运用,导致功能不稳定,导致按键输入与功能显示不匹配,加入延时子程序后,该错误得以改正。
3.在用数码管显示时,由于P0是8位,而显示只需要用7位来确定,为了找出P0与数码管的7个显示管之间的对应关系,通过对A寄存器进行不同的赋值,即MOV A,#FEH和MOV A,#7FH,发现当A=FEH时数码管显示为8,即8位数据中最后一位不对数码管的显示七作用,而D7-D1分别对应着数码管的a-g。
4.由于一开始并不知道矩阵键盘与设置P2口所对应的关系,于是采用了测试的方法。
通过SHOW1234的调用程序来获取键盘的对应关系。
如用让R5=7EH,然后通过按如图所示的0位置和15位置,发现15位置时能够显示,即7EH代表了15位置,再用R5=7DH,再去测试图中所示的11位置和14位置,发现是11位置时能够显示,即可按照此规律确定其他键所对应的P2值。
5.在串口(CHUANKOU)子程序时,CMP2中的判断跳转语句原先为CJNER7,#31H,MAIN,则显示时间很短,不能够稳定在改状态,于是增加了跳转入口,改为CJNE R7,#31H,CMP3,并增加了CMP3,由此能够实现在没有别的操作下,可让显示稳定在一个状态。
315Mhz 无线通信程序原理:第一块单片机p1.0 口输出脉冲方波提供给无线发射模块,无线发射模块将信号以电磁波的形式传到无线接收模块。
无线接收模块会根据这个电磁波还原出脉冲方波提供给第二块单片机,第二块单片机进行进一步的解算处理。
通信协议:根据这个原理和315模块的特性。
我决定以900us 高电平和2000us 底电平表示1;450us 高电平和2000us 低电平表示0。
而8个1或0组成一个字节。
为了防止误码,所以在每个字节的前面加一个2ms 高电平和2ms 低电平的起始码。
每个5S 发送一个字符,一个字符发送20 遍*******************************//****************************315Mhz 无线通信程序发送程序11.0592M 晶振 1 机器周期=1.0851us定时器产生2MS 定时TH0=0XF8;TL0=0XCD;900us 定时TH0=0XFC;TL0=0XC3;450us 定时TH0=0XFE;TL0=0X61;*******************************/#include<reg52.h>#include "intrins.h"#define uint unsigned int#define uchar unsigned charsbit WXSEND=P1^0;uchar timedata[8]={0xfe,0x61,0xfc,0xc3,0xf8,0xcd,0xea,0x66};// 450us, 900us,2MS,6ms/*************************************11.0592MHZ 下500 毫秒延时,还准***************************************/void delay500ms(uint i)uint j;uchar k;while(i--){for(j=0;j<750;j++)for(k=0;k<200;k++);}}void time0init(){TMOD=0x01;//}void sendset(uchar senddata);// 发送数据程序void sendstartbit();// 数据发送起始信号2ms 高电平和2ms 低电平的起始码void sendlowbit();// 发送低电平void sendhighbit();// 发送高电平void main(){uchar senddata,i;time0init();// 定时器初始化senddata=0x55;while(1) {for(i=0;i<20;i++){sendset(senddata);// 发送数据程序}delay500ms(10);senddata++;}}// 发送数据程序void sendset(uchar senddata){uchar i,sendbit;sendstartbit();// 发送开始信号for(i=0;i<8;i++){sendbit=senddata&0x80;if(sendbit==0)sendlowbit(); // 发送低电平else sendhighbit();// 发送高电平senddata=senddata<<1;}// 数据发送起始信号6ms 高电平和2ms 低电平的起始码void sendstartbit(){WXSEND=1;TH0=timedata[4];TL0=timedata[5];TR0=1;while(TF0==0);TR0=0;TF0=0;TH0=timedata[4];TL0=timedata[5];WXSEND=0;TR0=1;while(TF0==0);TR0=0;TF0=0;}void sendlowbit() // 发送低电平{WXSEND=1;TH0=timedata[0];TL0=timedata[1];TR0=1;while(TF0==0);TR0=0;TF0=0;TH0=timedata[4];TL0=timedata[5];WXSEND=0;TR0=1;while(TF0==0);TR0=0;TF0=0;}void发送高电平sendhighbit()//{WXSEND=1;TH0=timedata[2];TL0=timedata[3];TR0=1;while(TF0==0);TR0=0;TF0=0;TH0=timedata[4];TL0=timedata[5];WXSEND=0;TR0=1;while(TF0==0);TR0=0;TF0=0;}/****************************315Mhz 无线通信程序接收程序11.0592M 晶振 1 机器周期=1.0851us用中断0 边沿触发中断,开启接收程序由于接收模块平时大部分时间是低电平,有信号时是高电平,而中断以,0 是负边沿触发,所硬件电路中接收模块的信号输出端经过非门后接到单片机P3.2接收到数据,用串口传到上位机的串口调试软件显示*******************************/#include<reg52.h>#include "intrins.h" #define uint unsigned int#define uchar unsigned char sbit WXrecep=P3^2;//uchar code timedata[6]={0xfe,0x61,0xfc,0xc3,0xf8,0xcd};// 450us,900us,2MS uchar wxrecepda;void time0init(){TMOD=0x21;// 定时器0TH0=0;TL0=0;//TMOD=0x20;/*TMOD:timer1,mode2,8-bitreload*/TH1=0xFD;/*TH1 11.0592MHz*/TL1=0XFD;EA=1;EX0=1;ET0=1;IE0=0;}void uartinit(){SCON=0x50;/*SCON: 模式1,8-bitUART, 使能接收*/ TR1=1;/*TR1:timer1run*/void receivewx();// 接收子程序void main(){time0init();// 定时器初始化uartinit();while(1) ;}void receivewx()// 接收子程序{uint i;uchar j,recedata;while(WXrecep==0);TR0=0;i=TH0*256+TL0;TH0=0;TL0=0;if((i>=1800)&&(i<=1890)){ recedata=0;for(j=0;j<8;j++){while(WXrecep==1);TR0=1;while(WXrecep==0);TR0=0;i=TH0*256+TL0;if((i>=390)&&(i<=450)) recedata=recedata&0xfe;else if((i>=800)&&(i<=860)) recedata=recedata|0x01;recedata=recedata<<1;TH0=0;TL0=0;}wxrecepda=recedata>>1 ;SBUF=wxrecepda;while(TI==0);TI=0;}}void wxrecint() interrupt 0{TH0=0;TL0=0;TR0=1;EX0=0;receivewx();EX0=1;}。
iar调试方法【最新版3篇】目录(篇1)1.IAR 调试方法概述2.IAR 调试流程3.IAR 调试工具4.IAR 调试技巧与实践5.总结正文(篇1)IAR 调试方法IAR(In-Application Reprogramming)即在应用程序中重新编程,是一种在不刷新整个程序的情况下对单片机程序进行部分修改的方法。
这种方法可以节省开发时间,降低开发成本,并且能够实现复杂的功能。
本文将介绍 IAR 调试方法的概述、流程、工具、技巧与实践。
一、IAR 调试方法概述IAR 调试方法是基于 IAR(In-Application Reprogramming)技术的一种调试方法,其主要特点是在应用程序运行过程中对程序进行部分修改,而不需要刷新整个程序。
这种方法可以实现对程序的快速调试和迭代,提高开发效率。
二、IAR 调试流程IAR 调试流程主要包括以下几个步骤:1.准备工作:首先需要对硬件进行配置,包括单片机、外设等,确保硬件连接正常。
2.编写调试程序:编写一个能够运行在目标系统上的调试程序,该程序需要包含 IAR 调试功能。
3.下载调试程序:将调试程序下载到目标系统中,并运行。
4.调试程序:在调试程序运行过程中,根据需要对程序进行部分修改,并保存修改后的程序。
5.上传新程序:将修改后的程序上传到目标系统,并运行新的程序。
6.重复调试:根据实际运行情况,重复步骤 4 和步骤 5,直到程序达到预期效果。
三、IAR 调试工具IAR 调试工具主要包括以下几个方面:1.IAR 编程器:用于编写和下载调试程序的工具,一般为硬件编程器或者软件编程器。
2.IAR 调试软件:运行在目标系统上,用于实现 IAR 调试功能的软件。
3.IAR 仿真器:用于模拟目标系统的运行环境,方便开发者进行调试。
四、IAR 调试技巧与实践1.善于利用断点调试:在调试程序中设置断点,能够帮助开发者定位问题所在,提高调试效率。
2.逐步执行调试:逐步执行调试程序,观察程序运行状态,有助于发现问题。
Keil 的辅助工具和部份高级技巧在前面的几讲中我们介绍了工程的建立方法,常用的调试方法,除此之外,Keil 还提供了一些辅助工具如外围接口、性能分析、变量来源分析、代码作用分析等,帮助我们了解程的性能、查找程序中的隐藏错误,快速查看程序变量名信息等,这一讲中将对这些功工具作一介绍,另外还将介绍Keil 的部份高级调试技巧。
一、辅助工具这部份功能并不是直接用来进行程序调试的,但可以帮助我们进行程序的调试、程序性能的分析,同样是一些很有用的工具。
1、外围接口为了能够比较直观地了解单片机中定时器、中断、并行端口、串行端口等常用外设的使用情况,Keil 提供了一些外围接口对话框,通过Peripherals 菜单选择,该菜单的下拉菜单内容与你建立项目时所选的CPU 有关,如果是选择的89C51 这一类“标准”的5 1 机,那么将会有Interrupt(中断)、I/O Ports(并行I/O 口)、Serial(串行口)、Timer(定时/计数器)这四个外围设图 1 外围设备之并行端口备菜单。
打开这些对话框,列出了外围设备的当前使用情况,各标志位的情况等,可以在这些对话框中直观地观察和更改各外围设备的运行情况。
下面我们通过一个简单例子看一看并行端口的外围设备对话框的使用。
例4:MOV A,#0FEHLOOP: MOV P1,ARL ACALL DELAY ;延时100 毫秒JMP LOOP其中延时100 毫秒的子程序请自行编写。
编译、连接进入调试后,点击Peripherals->I/O-Ports->Port 1 打开,如图1 所示,全速运行,可以看到代表各位的勾在不断变化(如果看不到变化,请点击View->Periodic Window Updata),这样可以形象地看出程序执行的结果。
注:如果你看到的变化极快,甚至看不太清楚,那么说明你的计算机性能好,模拟执行的速度快,你可以试着将加长延时程序的时间以放慢速度。
单片机控制系统的硬件设计与软件调试教程单片机控制系统是现代电子技术中常见的一种嵌入式控制系统,其具有体积小、功耗低、成本低等优点,因而在各个领域得到广泛应用。
本文将介绍如何进行单片机控制系统的硬件设计与软件调试,帮助读者快速掌握相关知识,并实际应用于项目当中。
一、硬件设计1. 系统需求分析在进行硬件设计之前,首先需要明确单片机控制系统的需求。
这包括功能需求、性能需求、输入输出接口需求等。
根据需求分析的结果,确定采用的单片机型号、外围芯片以及必要的传感器、执行机构等。
2. 系统框图设计根据系统需求,绘制系统框图。
框图主要包括单片机、外围芯片、传感器、执行机构之间的连接关系,并标明各接口引脚。
3. 电源设计单片机控制系统的电源设计至关重要。
需要根据单片机和外围芯片的工作电压要求,选择合适的电源模块,并进行电源稳压电路的设计,以确保系统工作的稳定性。
4. 电路设计与布局根据系统框图,进行电路设计与布局。
需要注意的是,对于模拟信号和数字信号的处理需要有一定的隔离和滤波措施,以减少干扰。
此外,对于输入输出接口,需要进行保护设计,以防止过电压或过电流的损坏。
5. PCB设计完成电路设计后,可以进行PCB设计。
首先,在PCB软件中绘制原理图,然后进行元器件布局和走线。
在进行布局时,应考虑到信号传输的长度和走线的阻抗匹配;在进行走线时,应考虑到信号的干扰和电源的分布。
完成布局和走线后,进行电网设计和最后的校对。
6. PCB制板完成PCB设计后,可以将设计好的原理图和布局文件发送给PCB厂家进行制板。
制板完成后,检查排线是否正确,无误后进行焊接。
二、软件调试1. 开发环境搭建首先需要搭建开发环境。
根据单片机型号,选择合适的开发环境,如Keil、IAR等,并将其安装到计算机上。
接下来,将单片机与计算机连接,并进行相应的驱动安装。
2. 系统初始化在软件调试过程中,首先需要进行系统的初始化。
这包括设置时钟源、配置IO口、初始化外设等。
《匠人手记》网络版 程序调试(除错)过程中 的一些雕虫小技 作者:程序匠人 发布日期:2009-11-26
《匠人手记》封面 E-MAIL:zj_artisan@hotmail.com 《匠人的百宝箱》博客:http://cxjr.21ic.org/ 《匠人手记》edn书友会:http://group.ednchina.com/628/ 《匠人手记》21ic书友会:http://bbs.21ic.com/iclist-63.html 手 记 目 录 1 一、 前言.........................................................................................................................1 二、 磨刀不误砍柴功.....................................................................................................1 三、 优先调试人机界面.................................................................................................2 四、 慢镜头的威力.........................................................................................................2 五、 快镜头的威力.........................................................................................................3 六、 程序中的黑匣子.....................................................................................................3 七、 设卡伏击,拦截流窜犯.........................................................................................4 八、 向猎人学习挖坑设陷阱的技术.............................................................................5 九、 程序中的窃听器.....................................................................................................6 十、 拉闸睡觉!统一管理调试代码.............................................................................7 十一、 附录:《匠人手记》简介...................................................................................9 1、 《匠人手记》内容简介...................................................................................9 2、 《匠人手记》目录...........................................................................................9 3、 《匠人手记》封面及内页.............................................................................10 4、 《匠人手记》热销情况.................................................................................11 5、 《匠人手记》被各界推荐.............................................................................12 6、 《匠人手记》读者热评.................................................................................13 7、 购书渠道.........................................................................................................13 8、 相关连接.........................................................................................................14 9、 《匠人手记》书友会Q群............................................................................14 10、 《匠人手记》网络版 版权声明.................................................................14 《匠人手记》网络版 《程序调试(除错)过程中的一些雕虫小技》 看《匠人手记》,与匠人同行!
第1页 1 程序调试(除错)过程中的一些雕虫小技 一、前言 调试程序,是软件开发过程中的一个必不可少的环节。这篇手记,匠人试着来整理一下日常调试过程中用到的技巧。
说到“技巧”,这个词自从被所长批臭之后,匠人就吓得不敢再提,生怕一不小心就暴露了思想的浅薄和眼光的局限,呵呵。所以咱们不叫“技巧”,干脆低调点,就叫“雕虫小技”吧。
这里所讨论的“调试”技巧,有些是必须结合开发工具本身的功能来实现,而有些可以通过烧录芯片来验证。
各种开发工具,提供的功能多少强弱也不尽相同,这些方法也未必都能套用。仅供参考吧。
最后说明一下,这是没有草稿的帖子,匠人仍然以不定期连载的方式,边写边发边改。可能结构会比较混乱。欢迎大家一起参与讨论。
二、磨刀不误砍柴功 在调试之前,需要掌握以下一些基本功: 1、熟悉当前的开发(调试)环境,比如:设置断点、单步运行、全速运行、终止运行,查看RAM、查看堆栈、查看IO口状态……总之,要熟练掌握基本操作的方法,并深刻了解其中意义。
2、了解芯片本身的资源和特性。 3、了解一点汇编语言的知识。(本来匠人是准备写“精通”的,但考虑到现状,还是“放低”这方面的要求罢了)。
4、掌握基本的电路知识和排错能力。(软件调试有时也会牵涉到硬件原因。总不能连三极管的好坏都不能识别吧?)
5、万用表、示波器、信号发生器……这些工具总该会用吧? 6、搜索、鉴别资料的能力。(内事问百度、外事问古狗、有事没事上21ic网) 7、与人沟通,描述问题的能力。(调试36计的最后一计——就是向他人讨教。当然,你得把话说明白才行)
差不多了,如果上述7把砍柴刀磨好了,就可以开始调试了。接下来,请调入你的程序……
——什么?你说你程序还没写? 《匠人手记》网络版 《程序调试(除错)过程中的一些雕虫小技》 看《匠人手记》,与匠人同行! 第2页 ——匠人倒塌…… 三、优先调试人机界面 面对程序中的一大堆模块,无从下手是吗?好吧,匠人告诉你,先调显示模块,然后是键盘。
为什么要先调显示模块?道理很简单,我们说“眼睛是心灵的窗户”,同样,“显示是程序的窗户”。一旦把显示模块调试好了,就可以通过这个窗口,偷 窥 (天呐,这两个居然是敏感字!) 程序内部的数据和状态了。
然后紧接着,就是调试键盘模块。有了这个按键,我们就可以人工干预程序的运行了。 ——什么,你的程序没有显示和按键? ——这位童鞋,你真不幸,请去检查一下自己的人品和星座运程先。谢谢。 实在是没显示?再看看系统有蜂鸣器吗?如果侥幸有的话,也能凑合着发发提示声音吧?
或者,有串口吗?可以考虑借助PC 端的串口调试软件来收发数据,这也是一个间接的人机交流方法。
总而言之,要尽快建立人机交流界面。
四、慢镜头的威力 2009年春晚捧红了魔术师刘谦(这位老兄名“谦”,其实一点都不谦虚——长的帅不是错,出来拽就是罪过了!),也勾起了大家对魔术的浓厚兴趣,如何识破那些快速的眼花缭乱的魔术手法呢?很简单,用慢镜头回放即可。据说刘谦那个橡皮筋魔术的手法就是被人如此识破的。
回到我们单片机上来。我们知道,单片机的运行速度,一般都是在几M到几十M(当然,也有为了节能而采用几十K的低速)。不管怎么样,这个速度都远远超出了我们人眼能够分辨的速度。眼睛一眨,也许几M条指令已经执行过去了。
比如说数码管显示(假设有4位数码管)。平时我们看到数码管同时点亮着,但是实际上,这4个数码管是逐个扫描的。在任意一个时刻,只有一位数码管被点亮。在微观上,我们可以进一步把每位数码管的扫描动作细分为以下几个步骤:
1、关闭上一位数码管的位选信号; 2、输出当前位数码管的段选信号; 3、开启当前位数码管的位选信号; 4、启动1ms延时; 5、延时结束后,指针移动到下一位数码管,并重复上述4个步骤,如此周而复始。