本博客的“EMC单片机专题”放的是我2年来的工作经验。因为EMC的资料相对非常的缺少,不像MCS-51,不少初学者入门碰到了困难,感觉比较无助,我刚开始入门的时候也深深的体验过。最近感觉有点累,想歇歇。但是觉得这样就走了,感觉有点不甘心。我是一个开源的爱好者,在贪婪的摄取别人代码的同时,我觉得我自己也该做点东西。中国的大环境不好,很多工程师都将自己的心得收的严严实实的,我觉得不好。当然,项目代码涉及到法律保护,这个是无可厚非,但是一些小经验,一些小器件的处理办法等等,是可以共享的,让别人走少一点弯路。
阅读文章的时候,我假设你曾经学过至少一种单片机,至少应该学过基本理论,诸如中断,定时器等等基本单元的原理,你应该掌握,文章不再详细的解释。同时,如果你是第一次接触EMC单片机的花,那么你必须至少花上一个星期去熟悉一下EMC单片机的基本硬件架构,基本汇编指令集。
几点原则:
一 如果用旧版的汇编编译器Elan Wice 的话,必须用外部软件编写和修改代码(推荐 Ultra Edit),因为Elan Wice自带的编辑器是有缺陷的,写程序的过程中会莫明其妙的多删一行程序,或者出现莫明其妙的符号,而且对汉字支持不好。这些都极其容易出现逻辑错误,郁闷的话可能要查半天,应该尽量的避免。新版的 Wice Plus (支持C语言)解决了这些问题,可以不强制要求用外部代码编辑器。
二 用仿真器带交流电(AC 220V)仿真的话,必须在目标板加上隔离变压器,否则会将仿真器烧坏。因为仿真器用的并口线,并口的“地”跟开关电源的“地”是连通的,如果在目标板连上市电,那么跟仿真器会形成回路,大电流会将仿真器烧毁,所以使用的时候千万注意。至于隔离的原理,可以参考模拟电子,耦合变压器部分的知识,这里就不说了。具体的隔离办法如下图所示:
三 不要想当然,E78PXX系列发展到现在,已经有了很多款单片机了。每个单片机都有差别,特别是涉及到编程部分,所以切忌想当然,以为EM78P156的程序,直接放到EM78P447上面就能用,实际上,你想错了,无论是入口地址,中断地址,中断前处理,寄存器设置,都不同,胡乱的做只会让你吃大亏,所以用每个单片机之前必须好好的阅读芯片资料,如果经常需要用几个不同芯片的话,可以像我那样,做好几个“程序框架”直接套,这些在后面章节会说到。
四 不要过多的怀疑单片机。在网上听说EMC不好,那么出点什么事就骂单片机烂,而从来不反省是自己的程序问题。见过不少人打电话过来要我们技术支持。最后查处问题,基本上都不是单片机,仿真器的问题,而且程序处理的不好,有些干脆就是写错程序。所以写程序的时候多一点自我检讨,有好处。
学会独立查找错误。2年了,如果你问我学到了什么,我可以毫不犹豫的说,我学会了快速找出问题!!记得开始做EMC单片机的时候遇到问题都非常郁闷,基本上需要找几天。但是现在不同了,基本上1分钟都不需要就可以将问题定位。我觉得这就是所谓的工作经验。当然,这份经验来之不易。在论坛游逛的时候,发现很多初学者很喜欢一出问题就上去问,然后贴一大堆程序。我想说的是,既然程序是你自己写的,就应该你自己将错误找出来,大不了就是将代码换个思路重新写。每每遇到问题就立刻去问,当然,这个问题一般都会解决,但是你学会的是“这个问题”,而不是“这类问题”。下次遇到有稍微变化的时候,估计你还是傻眼了。所以,问题的根本是学会自己找出问题,锻炼独立思考问题,独立解决问题的能力,才是大有裨益的。当然,你说写程序只是为了两餐,而对技术没有执着,那么你可以当我没有说过。这不是说教,只是我自己亲身体会的一点小经验而已。
山路永远都是最难走的,但是山顶的风景永远都是最漂亮的,然而能看到这美丽风景的只有少数人,当然,希望你就是其中一个。广大的技术工作人员,一起共勉把。
关键字:单片机 注意事项
引用地址:
单片机入门注意事项
推荐阅读最新更新时间:2024-03-16 15:11
AVR单片机教程——数字IO寄存器
前两篇教程中我们学习了LED、按键、开关的基本原理,数字输入输出的使用以及两者之间的关系。我们用到了 pin_mode 、 pin_read 和 pin_write 这三个函数,实际上它们离最底层(至少是单片机制造商允许我们接触到的最底层)就只有一步之遥了。而学单片机要是不了解一点底层,那跟Arduino玩家还有什么区别?(为防止有忠实的Arduino粉丝骂我,我得承认还是有一小部分Arduino玩家是知道本篇教程所介绍内容的。)根本不好意思说自己学过单片机好吧。这所谓的最底层,就是数字IO寄存器了。 在开始之前,你需要下载两份文档: 单片机的数据手册。官网链接极慢,我在国内平台上传了一份,在本篇教程写成之时是最新的。
[单片机]
PIC16F877A单片机led的动态显示
list p=16F877A,R=DEC include p16F877A.inc ;;;;;user variables;;;;;;;; Count2 equ 23H Count3 equ 24H data_out1 equ 25H data_out2 equ 26H ;;;;;;;reset vector;;;;;;;;; org 0x00 goto mainline ;;;;;;delay program;;;;;;; delay_2ms movlw 0x05 movwf Count2 lp0 movlw 0xff movwf Count3 lp1 decfsz Count3,F goto lp1 decfsz Count2
[单片机]
51单片机之寄存器-3.4单片机串口中断
现在我们来看看如何操作串口通信中断。回顾一下前面讲的定时器中断。当TH0和TL0计数溢出时,硬件自动将TF0溢出标志位置1,通知CPU请求中断。串口通信很类似,假设CPU正在进行串口数据发送工作,当一帧发送完成时,硬件自动将TI置1,通知CPU一帧数据发送完毕等待CPU的指令,也就是串口中断服务程序。同样的道理,对于串口数据接收中断,当一帧接收完毕,硬件自动将RI置1,通知CPU一帧数据接收完毕了,是否有其它指示。前面讲过,对于中断,无论是串口数据发送中断,还是串口接收中断,都有两个开关控制,一个总开关EA,一个分开关ES(对于串口中断)。因此在使用串口中断之前要将两个开关打开EA=1,ES=1. 下面对于串口发送和接收中断我们各举
[单片机]
单片机C语言求平方根函数
在单片机中要开平方.可以用到下面算法: 算法1: 本算法只采用移位、加减法、判断和循环实现,因为它不需要浮点运算,也不需要乘除运算,因此可以很方便地运用到各种芯片上去。 我们先来看看10进制下是如何手工计算开方的。 先看下面两个算式, x = 10*p + q (1) 公式(1)左右平方之后得: x^2 = 100*p^2 + 20pq + q^2 (2) 现在假设我们知道x^2和p,希望求出q来,求出了q也就求出了x^2的开方x了。 我们把公式(2)改写为如下格式: q = (x^2 - 100*p^2)/(20*p+q) (3) 这个算式左右都有q,因此无法直接计算出q来,因此手工的开方算
[单片机]
基于单片机降低电池供电系统功耗的方案
引言 20世纪90年代以来,随着集成电路特征线宽的持续缩小以及芯片密度和工作频率的相应增加,降低功耗已经成为亚微米和深亚微米超大规模集成电路设计中的一个主要考虑因素。功耗的增加会带来一系列问题,例如电路参数漂移、可靠性下降、芯片封装成本增加等。因此,系统的功耗在整个系统设计中,尤其是在采用电池供电的系统中显得十分重要。 Microchip公司PIC系列的单片机为设计高性能、低功耗的单片机系统提供了很好的解决方案。下面从低功耗设计方法及具体例子来介绍PIC单片机低功耗应用。 1 低功耗设计方法 为使系统工作在低功耗状态,必须正确设置单片机的配置及工作方式。下面结合最常用的PIC12、PIC16等单片机介绍
[单片机]
51单片机-按键
矩阵按键: 实现功能按一个键,相应的灯亮。 左边的是普通二极管,右边的是发光二极管。左边的二极管如果想导通,则右边要比左边电平低。如果导通就是按键可以控制灯亮,那么按键左下的都为低电平,系统复位时默认I/O是高电平,所以给垂直方向的I/O拉低,这样如果按键按下,电路导通,那么垂直方向I/O的低电平会把水平方向的拉低。这样就可以通过检测水平方向哪个I/O为低电平来检测哪个键被按下。 开始时对程序的错误想法:被按下的键两边肯定都是低电平,把它们存在一个数组里,然后检测。这样是不对的,用一个临时变量去存P0的值,不会有相同的,开始P0的值为oxff,这样即使按下按键,那么两边的引脚还是高电平,所以失败了。 #
[单片机]
ST的STM32MCU荣获EDNC“最佳产品奖”
意法半导体旗下的STM32微控制器系列产品从众多的各类参赛者中脱颖而出,荣获“2008年EDNC创新奖最佳产品奖”。EDNC创新奖旨在表彰出色的电子产品和杰出的专业人员,评选程序是先由专家评委评选入围产品,再由全中国的工程师通过网络投票评选出最终的获胜者。 意法半导体的STM32微控制器系列产品赢得EDNC微处理器和数字信号处理器类“最佳产品奖”。基于先进的ARM Cortex-M3内核,STM32系列微控制器提供最高达512 KB的片上闪存,配备大容量的SRAM,更额外提供显示、声音、存储和先进控制等功能,优异的低功耗特性支持多种省电模式,特别适用于各种消费电子和工业控制产品。
[单片机]
MCU巨头,血拼GPU性能
曾经,MCU是电子产品的控制核心,GPU是图像世界的掌控者,二者在过去很少有交集。随着越来越多图形处理需求,MCU中放GPU,已经不是什么新鲜操作。 最近一段时间,边缘AI概念的兴起,以及汽车图形显示性能的提升,越来越多的MCU厂商开始“卷”图像处理性能。 MCU的图形历史 在那个没有GPU的时代,所有图形还都是交给CPU绘制。虽然这没什么问题,但随着显示图形图像愈发复杂,CPU越来越力不从心。对计算机来说,低效率带来的就是延迟和卡顿,整体功耗也会随之攀升,GPU便应运而生,将CPU从繁重的图形计算任务中拯救了出来。 MCU也有类似的发展历程。早期MCU极少有图形显示的需求,即便有,也只是简单的12864之类
[单片机]