博文

CPLD与51单片机总线接口(2005-10-17 10:22:00)

摘要:前段时间学习的CPLD与51单片机总线接口  一起分享 `timescale 1ns/1ns
module IO_KZ(Data,P27,WR,RD,ALE,CLR,OUTKEY,OUT30,CS,CS1,LEDCS,OC);
 inout  [7:0]Data;
 input  WR;
 input  P27;
 input  RD;
 input  ALE;
 input  CLR;
 input  OC;
 input  [4:0]OUTKEY;
 output [59:0]OUT30;
 output [1:0]CS;
 output CS1;
 output [14:0]LEDCS;
 reg    [14:0]LEDCS;
 reg    [59:0]OUT30;
 reg   [1:0]CS;
 wire   CS1;
 //wire  [7:0]Data;
 reg    [8:0]IOADD;
 reg    [15:0]DataBF;
 reg    wr_en;
 reg    [7:0]OUTKEYBF;
 //wire    [7:0]OUTKEYBF1;
assign  CS1=((IOADD==338)&&(OC==0))?1'b0:1'b1;//8052
assign  Data=((IOADD==277)&&(OC==0)&&(RD==0))?OUTKEYB......

阅读全文(3232) | 评论:0

从51初学者到电子工程师 (转贴)(2005-10-17 10:20:00)

摘要:从51初学者到电子工程师 第一课

从初学者到电子工程师

一、前言

我的帖子“合格的电子工程师需要掌握的知识和技能”在电子产品世界(

http://bbs.edw.com.cn/list.asp?boardid=11)和电子工程师论坛(

http://www.eebyte.com/superbbs/list.asp?boardid=21)上发表后,点击的人数

还行,这让我也小有了成就感一把。也有人说这个帖子太空,是的,因为实际上这

只是一个我对公司初级员工讲课的培训大纲;但是,初学者可以将这个大纲作为一

个参照物,参照自己的知识是否全面。

很多电子工程师在某个方面精深钻研,成为某一个特殊领域的专家,从一开始的养

家糊口、慢慢小有收益、最后宝马豪宅,也是有的;这些电子工程师可能没有全面

掌握这些知识,因为这些行业用不上,例如,液晶显示器,很多行业就不需要;但

是,对于一个初学者,我认为,这个提纲是切合实际的,对于面向控制而言,已经

基本够用了;对于初学者,全面地掌握这些知识是很有必要的,因为你不知道今后

需要使用什么哪些知识,而这些知识, 80%以上你会在今后的工作中使用上,因为

这是都是最基本的。熟练掌握这些知识和应用,根据不同的地区、行业和老板,月

薪应该可以在3000元~5000元之间,甚至更高。

其实,可能有些你用不上,但是知道了也没有坏处;所谓书到用时方很少,又有谓

艺不压身。知识=月薪=年薪=金钱=香车宝马=…….. ,呵呵。

为什么要掌握这些知识?

实际上,电子工程师就是将一堆器件搭在一起,注入思想(程序),完成原来的这

些器件分离时无法完成的功能,做成一个成品。所需要的技能越高、功能越复杂、

成本越低、市场上对相应的东东的需求越大,就越成功。这就是电子工程师的自身

的价值。从成本到产品售出,之间的差价就是企业的追求。作为企业的老板,是在

市场上去寻找这样的应用;对电子工程师而言,是将老板提出的需求或者应用按照<......

阅读全文(4377) | 评论:0

Keil C51软件使用详解 1(2005-10-17 10:17:00)

摘要:第一节 Keil C51编译器的控制指令
C51编译器的控制指令分为三类:源文件控制类,目标文件控制类及列表控制类。 1. 源文件控制类
NOEXTEND:C51源文件不允许使用ANSI C扩展功能。 DEFINE(DF):定义预处理(在C51命令行)。 2. 目标文件(Object)控制类:
COMPACT LARGE SMALL 选编译模式 DEBUG(DB) 包含调试信息,以供仿真器或dSCope51使用。 NOAMAKE(NOAM) 禁止AutoMake信息记录 NOREGPARMS 禁止用寄存器传递参数 OBJECTEXTEND(OE) Object文件包含附加变量类型信息 OPTIMIZE(OT) 指定优化级别 REGFILE(RF) 指定一个寄存器使用的文件以供整体优化用 REGISTERBANK(RB) 指定一个供绝对寄存器访问的寄存器区名 SRC 不生成目标文件只生成汇编源文件 其它控件不常用。 3. 列表文件(listing)控制类:
CODE(CD):向列表文件加入汇编列表 LISTINCLUDE(LC):显示indude文件 SYMBOLS(SB):列表文件包括模块内所有符号的列表 WARNINGLEVEL(WL):选择“警告”级别 第二节 dScope51的使用
1. dScope51 for Dos
总的来说dScope51具有以下特性: l 高级语言显示模式 l 集成硬件环境模拟 l 单步或“GO”执行模式 l 存储器、寄存器及变量访问 l Watch表达式之值 l 函数与信号功能 下面,具体说明在进入dScope51 for Dos之后,如何实现上述功能,dScope51采用下拉菜单格式和窗口显示控制,共有language、serial、exe、register四个窗口,其中exe为命令行窗口,language为程序窗口,serial为串口窗,register为寄存器窗。 (1) 高级语言显示模式
单击主菜单中的“View”,第一栏中的三条命令“Highlevel”、“Mixed”、“Assembly”分别对所装入的程序按照“高级”、“混合级”及“汇编级”三种方式显示,以方便调试使用。 (2) 集成硬件环境模拟显示
主菜单中“Perip......

阅读全文(3473) | 评论:0

C语言在单片机开发中的应用(2005-10-17 10:15:00)

摘要:在单片机的开发应用中,已逐渐开始引入高级语言,C语言就是其中的一种。对用惯了汇编的人来说,总觉得高级语言’可控性’不好,不如汇编那样随心所欲。但是只要我们掌握了一定的C语言知识,有些东西还是容易做出来的,以下是笔者实际工作中遇到的几个问题,希望对初学C51者有所帮助。 一、C51热启动代码的编制 对于工业控制计算机,往往设有有看门狗电路,当看门狗动作,使计算机复位,这就是热启动。热启动时,一般不允许从头开始,这将导致现有的已测量到或计算到的值复位,导致系统工作异常。因而在程序必须判断是热启动还是冷启动,常用的方法是:确定某内存单位为标志位(如0x7f位和0x7e位),启动时首先读该内存单元的内容,如果它等于一个特定的值(例如两个内存单元的都是0xaa),就认为是热启动,否则就是冷启动,程序执行初始化部份,并将0xaa赋与这两个内存单元。 根据以上的设计思路,编程时,设置一个指针,让其指向特定的内存单元如0x7f,然后在程序中判断,程序如下: void main() { char data *HotPoint=(char *)0x7f; if((*HotPoint==0xaa)&&(*(--HotPoint)==0xaa)) { /*热启动的处理 */ } else { HotPoint=0x7e; /*冷启动的处进 *HotPoint=0xaa; *(++HotPoint)=0xaa; } /*正常工作代码*/ } 然而实际调试中发现,无论是热启动还是冷启动,开机后所有内存单元的值都被复位为0,当然也实现不了热启动的要求。这是为什么呢?原来,用C语言编程时,开机时执行的代码并非是从main()函数的第一句语句开始的,在main()函数的第一句语句执行前要先执行一段’起始代码’。正是这段代码执行了清零的工作。C编译程序提供了这段起始代码的源程序,名为CSTARTUP.A51,打开这个文件,可以看到如下代码: IDATALEN EQU 80H ; the length of IDATA memory in bytes. STARTUP1: IF IDATALEN <> 0 MOV R0,#IDATALEN - 1 CLR A IDATALOOP: MOV @R0,A DJNZ......

阅读全文(1737) | 评论:0

人生12个经典领悟    学会做人(2005-10-17 10:11:00)

摘要:1、父子二人经过五星级饭店门口,看到一辆十分豪华的进口轿车。儿子不屑地对他的父亲说:“坐这种车的人,肚子里一定没有学问!”而父亲则轻描淡写地回答:“说这种话的人,口袋里一定没有钱!”

  点评:你对事情的看法,是不是也反映出你内心真正的态度?
  
  2、晚饭后,母亲和女儿一块儿洗碗盘,父亲和儿子在客厅看电视。突然,厨房里传来打破盘子的响声,然后一片沉寂。于是儿子望着他父亲,说道:“一定是妈妈打破的。”“你怎么知道?”“她没有骂人。”

  点评:我们习惯以不同的标准来看人看己,以致往往是责人以严,待己以宽。

  3、有两个台湾观光团到日本伊豆半岛旅游,路况很差,到处都是坑洞。其中一位导游连声抱歉,说路面简直像麻子一样。而另一个导游却诗意盎然地对游客说:“诸位先生、女士,我们现在走的这条道路正是赫赫有名的伊豆迷人酒窝大道。”

  点评:虽是同样的情况,然而不同的意念却会产生不同的态度。思想是何等奇妙的事,如何去想,决定权在你。

  4、同样是小学三年级的学生,在作文中说他们将来的志愿是当小丑。中国的老师斥之曰:“胸无大志,孺子不可教也!”而外国的老师则会说:“愿你把欢笑带给全世界!”

  点评:身为长辈的我们,不但容易要求多于鼓励,更狭窄地界定了成功的定义。

   5、在故宫博物院中,有一位太太不耐烦地对她先生说:“我说你为什么走得这么慢。原来你老是停下来看这些东西。”

  点评:有人只知道在人生的道路上狂奔,结果失去了观看两旁美丽花朵的机会。

   6、妻子正在厨房炒菜。丈夫在她旁边一直唠叨不停:慢些。小心!火太大了。赶快把鱼翻过来。快铲起来。油放太多了!把豆腐整平一下!“哎呀,”妻子脱口而出,“我懂得怎样炒菜。”“你当然懂,太太,”丈夫平静地答道:“我只是要让你知道,我在开车时,你在旁边喋喋不休,我的感觉如何。”

  点评:学会体谅他人并不困难,只要你愿意认真地站在对方的角度和立场看问题。

  7、一辆满载乘客的公共汽车沿着下坡路快速前进着,有一个人在后面紧紧地追赶着这辆车子。一个乘客从车窗中伸出头来对追车子的人说:“老兄!算啦,你追不上的!”“我必须追上它,”这人气喘吁吁地说......

阅读全文(1923) | 评论:0

C/C++头文件一览(2005-10-10 15:20:00)

摘要:   C/C++头文件一览
C、传统 C++ #include <assert.h>    //设定插入点
#include <ctype.h>     //字符处理
#include <errno.h>     //定义错误码
#include <float.h>     //浮点数处理
#include <fstream.h>    //文件输入/输出
#include <iomanip.h>    //参数化输入/输出
#include <iostream.h>   //数据流输入/输出
#include <limits.h>    //定义各种数据类型最值常量
#include <locale.h>    //定义本地化函数
#include <math.h>     //定义数学函数
#include <stdio.h>     //定义输入/输出函数
#include <stdlib.h>    //定义杂项函数及内存分配函数
#include <string.h>    //字符串处理
#include <strstrea.h>   //基于数组的输入/输出
#include <time.h>     //定义关于时间的函数
#include <wchar.h>     //宽字符处理及输入/输出
#include <wctype.h>    //宽字符分类 ////////////////////////////////////////////////////////////////////////// 标准 C++ (同上的不再注释) #include <algorithm>    //STL 通用算法
#include <bitset>     //STL 位集容器
#include <cctype>
#include <cerrno><......

阅读全文(1386) | 评论:0

电子时钟表   自己试着做的   还好(2005-10-10 15:02:00)

摘要:   ORG 0000H
  LJMP      START
   ORG 0003H
   RETI
   ORG 000BH
  LJMP     INTT0
  ORG 0013H
    RETI
  ORG 001BH
  LJMP     INTT1
  ORG 0023H
  RETI
   ORG 0023H
   RETI
  START: LCALL ST
   MOV   R0,  #70H
MOV   R7,  #0BH
    CLEARDISP:  MOV   @R0, #00H
    INC   R0
   DJNZ  R7,CLEARDISP
  MOV  20H,#00H
   MOV   7AH,#0AH
     MOV TMOD,#11H
     MOV   TL0,   #0B0H
     MOV   TH0,   #3CH
     MOV   TL1,   #0B0H
     MOV   TH1,&......

阅读全文(2497) | 评论:0

封装型式一些缩略语供大家参考(2005-10-10 15:01:00)

摘要:封装型式有很多以下是一些缩略语供大家参考!
1.BGA 球栅阵列封装
2.CSP 芯片缩放式封装
3.COB 板上芯片贴装
4.COC 瓷质基板上芯片贴装
5.MCM 多芯片模型贴装
6.LCC 无引线片式载体
7.CFP 陶瓷扁平封装
8.PQFP 塑料四边引线封装
9.SOJ 塑料J形线封装
10.SOP 小外形外壳封装
11.TQFP 扁平簿片方形封装
12.TSOP 微型簿片式封装
13.CBGA 陶瓷焊球阵列封装
14.CPGA 陶瓷针栅阵列封装
15.CQFP 陶瓷四边引线扁平
16.CERDIP 陶瓷熔封双列
17.PBGA 塑料焊球阵列封装
18.SSOP 窄间距小外型塑封
19.WLCSP 晶圆片级芯片规模封装
20.FCOB 板上倒装片
以上介绍摘录集成电路应用杂志敬请各位同行参考。


其中现在国内主流产品以DIP TSSOP QFP SOP等为多。
日本、台湾、美国的主流产品以TSSOP、QFP(100引脚以上) BGA CSP 等为多。
以后封装形式我认为BGA CSP 产品将成为重点,它们将取代QFP成为高I/O端子IC封装的主流 。 
......

阅读全文(1726) | 评论:0

单片机开发中应掌握的几个基本技巧(2005-09-26 09:01:00)

摘要:在单片机应用开发中,代码的使用效率问题、单片机抗干扰性和可靠性等问题仍困扰着
工程师。为帮助工程师解决单片机设计上的难题,《电子工程专辑》网站特邀Holtek香
港分公司工程部处长邓宏杰先生担任《单片机应用编程技巧》专题讨论的嘉宾,与广大
设计工程师交流单片机设计开发经验。现根据论坛中的讨论归纳出单片机开发中应掌握
的几个基本技巧。 一、 如何提高C语言编程代码的效率 邓宏杰指出,用C语言进行单片机程序设计是单片机开发与应用的必然趋势。他强调:“
如果使用C编程时,要达到最高的效率,最好熟悉所使用的C编译器。先试验一下每条C语
言编译以后对应的汇编语言的语句行数,这样就可以很明确的知道效率。在今后编程的
时候,使用编译效率最高的语句。” 他指出,各家的C编译器都会有一定的差异,故编译效率也会有所不同,优秀的嵌入式系
统C编译器代码长度和执行时间仅比以汇编语言编写的同样功能程度长5-20%。他说:“
对于复杂而开发时间紧的项目时,可以采用C语言,但前提是要求你对该MCU系统的C语言
和C编译器非常熟悉,特别要注意该C编译系统所能支持的数据类型和算法。虽然C语言是
最普遍的一种高级语言,但由于不同的MCU厂家其C语言编译系统是有所差别的,特别是
在一些特殊功能模块的操作上。所以如果对这些特性不了解,那么调试起来问题就会很
多,反而导致执行效率低于汇编语言。” 二、 如何减少程序中的bug? 对于如何减少程序的bug,邓宏杰给出了一些建议,他指出系统运行中应考虑的超范围管
理参数有:
1.物理参数。这些参数主要是系统的输入参数,它包括激励参数、采集处理中的运行参
数和处理结束的结果参数。合理设定这些边界,将超出边界的参数都视为非正常激励或
非正常回应进行出错处理。
2.资源参数。这些参数主要是系统中的电路、器件、功能单元的资源,如记忆体容量、
存储单元长度、堆叠深度。在程式设计中,对资源参数不允许超范围使用。
3.应用参数。这些应用参数常表现为一些单片机、功能单元的应用条件。如E2PROM的擦
写次数与资料存储时间等应用参数界限。
4.过程参数。指系统运行中的有序变化的参数。
三、如何解决单片机的抗干扰性问题 邓宏杰指......

阅读全文(2249) | 评论:0

出租车计价器程序(2005-09-26 08:59:00)

摘要:ORG 0000H           Z8279 EQU 0FF82H
          D8279 EQU 0FF80H INII8279: MOV DPTR,#Z8279
          MOV A, #0D1H
          MOVX @DPTR,A
WAIT:     MOVX  A, @DPTR
          JB   ACC.7, WAIT
      MOV A,#00H  
      MOVX @DPTR,A
      MOV A,#2AH
      MOVX @DPTR,A                                 8279初始化;    
      MOV A,#00H
 
      PUSH PSW
   &n......

阅读全文(6016) | 评论:0