EDN首页   博客首页

最新日志

发表于:2008-9-7 9:43:04
标签:无标签

0

让你更好的掌握51UART的发送接受机制:单片机串口通信编程注意事项(转)

在紧张的工作中,现在对单片机的串口通信编程有了一个新的认识,下面就针对下面不同的几个工程程序文件的区别做一个比较详细的总结。

本次小结的主要目的是更加明确单片机的串口中断是如何发生的。即:是如何触发串口中断的发送功能的。在说明中我使用特殊的字体颜色来强调重点部分和注意事项。

 

程序一:

本程序是使用软件设置TI来实现串口中断的触发,如果在初始化函数中不增加TI=1;这条语句,那么是不会触发中断的

#include <STC89C5X.h>    //包含51单片机的头文件

#define uint unsigned int

#define uchar unsigned char

/* 串口通讯接口定义

   RXD-------P3.0 数据接收端

   TXD-------P3.1 数据发送端

*/

/*============================================================================

//函 数 名:  void InitUart(void)

//    : 

//返 回 值: 

//函数功能:  串口初始化函数

==============================================================================*/

void InitUart(void)

{

    //使用定时器1作为波特率发生器

    TMOD|=0x20;//T1工作为方式2

    SCON=0x50;//方式110位异步同通讯,串口允许接收

    PCON|=0x80;//波特率倍增,SMOD='1'

    TH1=0xfa;

    TL1=0xfa;

    TR1=1;

    TI=1;//使用软件触发首次串口中断的发生

    ES=1;//串口中断允许

    EA=1;//总中断允许

}

/*============================================================================

//函 数 名:  main()

//    : 

//返 回 值: 

//函数功能:  串口通信工程的主函数

==============================================================================*/

main()

{

    InitUart();//串口设置初始化

    while(1);//死循环等待哦!

}

/*============================================================================

//函 数 名:  void uart(void) interrupt 4

//    : 

//返 回 值: 

//函数功能:  串口中断处理函数

==============================================================================*/

void uart(void) interrupt 4

{   /*接收数据中断处理*/

    if(RI)

    {

       RI=0;//接收语句放在本语句前面,本语句是软件复位接收中断标志

    }

    /*发送数据中断处理*/

    if(TI)

    {

       TI=0;//复位TI

       SBUF = 'B';

    }  

}

 

 

 

 

 

 

 

程序二:

本程序是使用在软件的初始化时在串口缓冲区SBUF中先放一个数据来实现串口中断的触发,如果在初始化函数中不增加SBUF = 0x00这条语句,那么是不会触发中断的

#include <STC89C5X.h>    //包含51单片机的头文件

#define uint unsigned int

#define uchar unsigned char

/* 串口通讯接口定义

   RXD-------P3.0 数据接收端

   TXD-------P3.1 数据发送端

*/

/*============================================================================

//函 数 名:  void InitUart(void)

//    : 

//返 回 值: 

//函数功能:  串口初始化函数

==============================================================================*/

void InitUart(void)

{

    //使用定时器1作为波特率发生器

    TMOD|=0x20;//T1工作为方式2

    SCON=0x50;//方式110位异步同通讯,串口允许接收

    PCON|=0x80;//波特率倍增,SMOD='1'

    TH1=0xfa;

    TL1=0xfa;

    TR1=1;

    SBUF = 0x00;//初始化是来实现串口中断的触发,在这里你也可以将TI复位为0’不会影响串口中断的数据发送,任意的值都可以放到SBUF中,不一定非是0x00

    ES=1;//串口中断允许

    EA=1;//总中断允许

}

/*============================================================================

//函 数 名:  main()

//    : 

//返 回 值: 

//函数功能:  串口通信工程的主函数

==============================================================================*/

main()

{

    InitUart();//串口设置初始化

    while(1);//死循环等待哦!

}

/*============================================================================

//函 数 名:  void uart(void) interrupt 4

//    : 

//返 回 值: 

//函数功能:  串口中断处理函数

==============================================================================*/

void uart(void) interrupt 4

{   /*接收数据中断处理*/

    if(RI)

    {

       RI=0;//接收语句放在本语句前面,本语句是软件复位接收中断标志

    }

    /*发送数据中断处理*/

    if(TI)

    {

       TI=0;//复位TI

       SBUF = 'B';

    }  

}

程序三:

在初始化函数中即不要“TI1;”语句,也不要“SBUF0x00;”语句就形成了程序三,这个程序是用来与上面的两个程序对比说明的。程序三是不能正确的发送数据的,串口中断服务程序一直都不会进去的!

不知道说明白没有,希望大家可以好好的看看!

自己动手调试一下就会有很深的体会!!!!

点击此处查看原文 >>

系统分类: 单片机   |    用户分类: 无分类    |    来源: 转贴

评论(0) | 阅读(85)
发表于:2008-6-3 19:37:28
标签:数据存储  

1

单片机系统中的掉电检测与数据存储问题(转)

1)总体思路

   由于电能表的计量是要求持续性的,而主供电系统不可能是持续的,注意这里需要一个掉电检测与数据存储的问题。首先检测出供电系统已经断电,然后启用备用电源存储数据,而且数据必须存储在掉电不易失的存储器(如EEPROMFLASH等)中。

   本应用中,需要检测出掉电后备用电源能提供足够的电能供单片机进行数据存储。总体思路,本应用中单片机采用的是STC89C58RD+,单片机内部已经集成了16KEEPROM,所以不需要另外外接存储器。ADE7755已经自带了电源监控功能,前面的ADE7755的介绍中已经有所描述,所以亦无须担心。这里只需要解决好单片机的掉电问题即可。在系统的稳压前端设置监测点,当监测点的电压下降到另一个基准比较电压时产生单片机外部中断。当单片机接收到外部中断后启动数据存储程序,将数据存储到片内EEPROM内。当主供电系统恢复供电后,单片机首先读取EEPROM数据,然后再恢复计数。

2)掉电检测

有电压采集转换、电压比较等方案。经过综合考虑,这里采用LM393比较器来对比监测点与参考点电压,一旦监测点电压降到某种程度,比较器就会有高电平输出,由此产生单片机外部中断。

另外有一种反其道而行之的方案。在降压后的交流端加一个光耦产生中断,一旦中断消失程序转向数据存储。

3)备用电源

虽然备用电源可以采用可充电电池,大电容等方案,但由于这里所需要的电量并不是很大,持续时间也不需要很长,只需要能完成数据存储即可。所以这里选择了大电容作为备用电源这一方案。选择了在稳压后端与单片机电源端直接并联了两个达3300uF的大容量电解电容。同时,为安全起见,在单片机的电源输入端还串入了一个低正向压降压降的二极管来阻止大电容向除单片机意外的其他电路放电。

4)数据存储

不可易失存储方案很多,比如EEPROMFLASH,铁电等。但Flash读写比较麻烦,铁电也需要另加外围器件,所以这里选择单片机内置的EEPROM无疑是最好的选择。不仅读写简单方便,可多次擦写,减少外围器件与单片机IO口,而且为备用电源减轻了很大的负担。

最后,需要说明的是,实际上现在很多高档单片机已经集成上述功能。比如AVR自带的BOD(Brown-out Detection)电路,内置模拟比较器,C8051F系列自带AD而且在掉电时自动产生中断。也有独立的专用复位芯片,如TPS3705ISL88706等。

5)理论计算

1)按恒流充放电的简化计算:Q = CV = IT.Q是电量,C是电容量,V是电压,I是电流,T是时间

那么T=CV/I,在本例中可以估算时间为 T= 0.0033f*(5.0V-3.8V) / 0.012A = 0.33s,330ms.
    330/8.5 = 38.8mS,
即最多可以保存38字节数据到EEPROM中,38字节对于本应用已经足够。

数据说明:

单片机在3.8V5.5V之间工作正常;单片机的工作电流典型值是4mA;最大工作电流20mA;普通外置EEPROM的读写一个字节的时间是8.5mS左右。据下面引述资料显示,此计算是保守估算,故可靠性有所保证。

STC单片机datasheet上是这样描述的:

1.同一次修改的数据放在同一扇区中,不是同一次修改的数据放在另外的扇区,就不须读出保护。
2.
如果一个扇区只用一个字节,那就是真正的EEPROM,STC 单片机的Data Flash 比外部EEPROM 要快很多,读一个字节/ 编程一个字节大概是0.2uS/60uS
3.
如果在一个扇区中存放了大量的数据,某次只需要修改其中的一个字节或一部分字节时,则另外的不需要修改的数据须先读出放在STC单片机的RAM中,然后擦除整个扇区,再将需要保留的数据和需修改的数据一并写回该扇区中。这时每个扇区使用的字节数是使用的越少越方便(不需读出一大堆需保留数据)

点击此处查看原文 >>

系统分类: 单片机   |    用户分类: 无分类    |    来源: 转贴

评论(0) | 阅读(236)
发表于:2008-6-3 19:27:14
标签:心率计  

2

便携式单片机控制液晶显示型心率计(转)

引言

  过去人们测量脉搏时常用的方法是使用测量脉搏的听诊器,或者使用吸附在人体上的电极等老式测量方法,这些方法无疑都不便于室外场所使用。本心率计在设计时就充分考虑到了这一点。它采用红外线来进行检测采集人体的脉搏,检测的部位为被检测人的任意一个手指或者是耳垂。

  检测的基本原理是:随着心脏的搏动,人体组织半透明度随之改变。当血液送到人体组织时,组织的半透明度减小;当血液流回心脏,组织的半透明度增大。这种现象在人体组织较薄的手指尖、耳垂等部位最为明显。因此,本心率计将红外发光二极管产生的红外线照射到人体的上述部位,并用装在该部位另一侧或旁边的红外光电管来检测机体组织的透明程度并把它转换成电信号。由于此信号的频率与人体每分钟的脉搏次数成正比,故只要把它转换成脉冲并进行整形、计数和显示,就能实现实时检测脉搏次数的目的。

  硬件电路设计

  笔者设计的这款便携式单片机控制液晶显示型心率计,硬件整体电路如图1所示。它可分为两个大的电路组成部分,即心率采集处理电路和单片机控制显示部分。

点击看大图

点击看原图

  心率采集处理电路

  心率采集处理电路如图2所示。该部分电路主要由脉搏次数红外检测采集电路模块、信号抗干扰电路模块、信号整形电路模块等三个主要的电路模块组成。其中,红外线发射管D1和红外线接收管Q1组成了红外检测采集电路;R2与C1、C2与C3、R4与C4和IC1a共同构成了信号抗干扰电路组,它们分别承担了对信号的低通滤波、干扰光线的光电隔离、残余高频干扰的滤除等任务。另外,IC1b、C5与R10、IC1c则共同组成了信号整形电路模块。

点击看大图

点击看原图

  心率采集处理电路工作的基本过程如下:

  首先,红外检测采集电路中D1发射红外线,而Q1则接收相应组织的半透明度,同时转换为电信号。由于脉搏一般在50次/分~200次/分之间,对应的频率范围在0.78Hz~3.33Hz之间,因此经红外检测采集到并转换得到的电信号频率就非常低。为了防止信号因外界高频信号干扰而使检测结果有误,信号就必须先进行低通滤波,以便滤出绝大部分的高频干扰。电路中采用R2和C1来完成滤除高频干扰的任务。

  然后,由于本心率计设计的适用场所为室外,因此它必然会遇到强光辐射的情况。为了避免在接收正常脉搏红外线时受到强光的干扰,电路中设计使用C2、C3背靠背串联组成的双极性耦合电容构成一个简单的光电隔离电路,从而实现了对于干扰光线的隔离。此外,为了防止前面对于高频干扰滤除的不够彻底,电路中还设计连接了由IC1a、R4、C4组成的截止频率为10Hz左右的低通滤波器电路,以便进一步滤除干扰,同时将前面的信号放大200倍左右。

  经前面处理得到的信号为叠加有噪声的脉冲正弦波,接下来必须对这个信号经过整形。先是通过比较器IC1b将正弦波转换成方波。利用R8可以实现将比较器的阈值调定在正弦波的幅值范围之内的目的。接下来,从IC1b的7引脚输出的方波信号经C5、R10构成的微分电路,进行微分处理后将成为正负相间的尖脉冲。为了稳定脉冲的输出,电路设计时是将此脉冲输入到单稳多谐振荡器IC1c的反相输入端,并利用IC1c的输出来作为后极工作的实际使用脉冲。

  IC1c在工作时,凡有输入信号时,它会在输入信号后沿到来时输出高电平,从而使C6通过R11充电。大约持续20ms之后,IC1c同相输入端的电位会因C3充电电流减小而降低,当此电位低于反相输入端的电位时(尖脉冲已过去很久), IC1c就将改变状态并再次输出低电平。这20ms的脉冲时间是与脉搏同步的,这种脉冲在电路工作时是与红色发光二极管D3的闪烁情况相对应的。

  经过IC1c之后的脉冲就是后面单片机控制电路所需的实际脉冲,通过R12送到单片机P3.3引脚后,就可实现后面的计数和显示了。

  IC1a、IC1b、IC1c工作所需的4.5V电源电压,在电路中是通过R14、R15对9V分压并经IC1d缓冲而得到的。这样的设置,就使得即使电池电压降低到6V,本电路也能实现正常工作。

  单片机控制电路

  单片机控制电路如图3所示。本部分电路主要由AT89C2051单片机、SMC1602A液晶显示芯片、12MHz的晶振电路以及复位电路等几个部分组成。电路主要完成对于前面采集处理得到的脉冲进行计数和显示的任务。

点击看大图

  经采集处理后得到的脉冲信号,通过P3.3引脚被输入到单片机中。单片机被设为负跳变中断触发模式。因此,每次脉冲下降沿到达时,单片机就将被触发并产生中断进行计时;而当下一次脉冲的下降沿到达时,单片机就对两次脉冲间的时间间隔进行运算,运算的结果就是心率。这个结果值,将通过P1口送至SMC1602A液晶显示芯片的数据端口,从而被显示出来。

  在显示心率值之后,单片机将对此心率值与80~120的人体正常脉搏范围进行比较。若此值X为80≤X≤120,液晶显示芯片中会显示“Very Good!”,以表示被测者心率正常;若此值不在80~120范围之内,即X<80或者X>120,那么,液晶显示芯片中会显示“A Little Bad!”,以便表示被测者心率出现不正常。

  另外,为了提示用户及时观察心率值的显示,电路中还设置了一个提示音的装置。即每次脉冲到来时,单片机P3.7引脚所连接的蜂鸣器SP均会发出提示音,这样,当用户第二次听到这个提示音时,就表明1分钟的脉搏计数显示已经完成。如此一来,结合前面心率采集处理电路中对于每次脉搏给予的点亮闪烁装置,本心率计在使用时就可以通过声光相结合的形式形象地把脉搏的快慢显示出来。

  此外,本心率计设计的有效测量显示范围为50次/分~199次/分。为避免可能出现的干扰的影响,单片机对两个脉冲之间的时间间距进行检测,若发现有干扰,即次数值不在设置的有效测量显示范围之内时,则忽略该干扰而不显示。这样就更加降低了心率计在实际使用时出现误差的可能性。

  元器件选取

  电路中单片机选用AT89C2051单片机。液晶显示器芯片则选用SMC1602A,电路中用到的运算放大器IC1为常用的四运放LM324,它的四路分别分配给了IC1a、IC1b、IC1c和IC1d。本心率计的电源为7~9V直流电源,可以通过电池供电,也可通过交直流转换后来获取,正常工作时的工作电流为100mA。设计中使用的提示音装置为普通蜂鸣器,也可用8Ω微型喇叭来代替。另外,单片机采用的是12MHz的晶振,若用其它频率晶振,在软件设计中就需进行相应修改。

  在使用前的安装时,可以将红外线发射管D1和红外线接收管Q1分别连接到一个夹子的两端。将剩余的电路板等部件安装于一个小盒中,为便于携带,小盒外部在电路安装完毕后应粘接一个可连接皮带的装置。为了方便使用时进行按键和观察,复位键K1、红色发光二极管D3、蜂鸣器SP以及液晶显示器芯片的显示窗口均要在盒子上留出相应放置的位置。同时液晶显示的窗口还应外加一个保护硬模,以免室外测量时的损坏。

  在实际使用时,先将由图1中红外线发射管D1和红外线接收管Q1构成的检测夹子装置夹在被测者的任意一个检测手指上,然后连通电源。若观察到红色发光二极管在闪烁,那就表明心率计能够正常工作。此时,为保证观察的准确性,可以按下复位键K1使系统复位之后再重新开始测量并计数显示。

  注意在两次听到蜂鸣器的提示音之后,首先观察到的结果是被检测者的心率,然后就是这个心率是否正常的英文提示语。若显示为“Very Good!”,则表示被检测者心率正常;若显示“A Little Bad!”,那么就表明被检测者的心率不太正常了。

  软件设计

  本心率计的软件设计采用的语言为汇编语言,主要的程序流程图如图4~图7所示。其中,图4为主程序流程图,图5为定时器中断子程序流程图,图6为INT1外中断子程序流程图,图7为显示部分的子程序流程图。

图4为主程序流程图

INT1外中断子程序流程图

显示部分的子程序流程图

  结语

  本文所设计的新型便携式心率计,设计方法比较简单易行,使用的元件也比较普遍。从总体来看,它具有体积小、抗干扰能力强、使用方便、易于观察、易于携带等多种优点。因此,该心率计将非常适合于体育训练和室外作业等场合的使用。

点击此处查看原文 >>

系统分类: 医疗电子   |    用户分类: 无分类    |    来源: 转贴

评论(2) | 阅读(597)
发表于:2008-4-6 9:36:31
标签:串口通信  

0

RS232和RS485通讯介绍(转载)

1、什么是RS-232-C接口?采用RS-232-C接口有何特点?传输电缆长度如何考虑?
    

     计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。 在串行通讯时,要求通讯双方都采用一个标准接口,使不同 的设备可以方便地连接起来进行通讯。 RS-232-C接口(又称 EIA RS-232-C)是目前最常用的一种串行通讯接口。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标 准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间 串行二进制数据交换接口技术标准”该标准规定采用一个25个脚的 DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信 号的电平加以规定。

  1)接口的信号内容 实际上RS-232-C的25条引线中有许多是很少使用的,在计算机与终端通讯中一般只使用3-9条引线。RS-232-C最常用的9条引线的信号内容见附表
  2)接口的电气特性 在RS-232-C中任何一条信号线的电压均为负逻辑关系。即:逻 辑“1”,-5— -15V;逻辑“0” +5— +15V 。噪声容限为2V。即 要求接收器能识别低至+3V的信号作为逻辑“0”,高到-3V的信号 作为逻辑“1”

附表1  引脚序号      信号名称      符号      流向      功能
    2                发送数据      TXD      DTE→DCE      DTE发送串行数据
    3              接收数据      RXD      DTE←DCE      DTE接收串行数据
    4              请求发送      RTS      DTE→DCE      DTE请求DCE将线路切换到发送方式
      5            允许发送      CTS      DTE←DCE      DCE告诉DTE线路已接通可以发送数据     
    6              数据设备准备好      DSR      DTE←DCE      DCE准备好
    7              信号地          信号公共地
    8              载波检测      DCD      DTE←DCE      表示DCE接收到远程载波
    20          数据终端准备好      DTR      DTE→DCE      DTE准备好
    22            振铃指示      RI      DTE←DCE      表示DCE与线路接通,出现振铃

   3) 接口的物理结构 RS-232-C接口连接器一般使用型号为DB-25的25芯插头座,通常插头在DCE端,插座在DTE端. 一些设备与PC机连接的RS-232-C接口,因为不使用对方的传送控制信号,只需三条接口线,即“发送数据”、“接收数据”和“信号地”。所以采用DB-9的9芯插头座,传输线采用屏蔽双绞线。
   4)传输电缆长度 由RS-232C标准规定在码元畸变小于4%的情况下,传输电缆长度应为50英尺,其实这个4%的码元畸变是很保守的,在实际应用中,约有99%的用户是按码元畸变10-20%的范围工作的,所以实际使用中最大距离会远超过50英尺,美国DEC公司曾规定允许码元畸变为10%而得出附表2 的实验结果。其中1号电缆为屏蔽电缆,型号为DECP.NO.9107723 内有三对双绞线,每对由22# AWG 组成,其外覆以屏蔽网。2号电缆为不带屏蔽的电缆。型号为DECP.NO.9105856-04是22#AWG的四芯电缆。 附表2 DEC 公司的实验结果     波特率      1 号电缆传输距离(英尺)      2 号电缆传输距离(英尺)     110      5000      3000     300      5000      3000     1200      3000      3000     2400      1000      500     4800      1000      250     9600      250      250  

 2. 什么是RS-485接口?它比RS-232-C接口相比有何特点?    由于RS-232-C接口标准出现较早,难免有不足之处,主要有以下四点:

   1) 接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL 电平不兼容故需使用电平转换电路方能与TTL电路连接。

   2) 传输速率较低,在异步传输时,波特率为20Kbps。

   3) 接口使用一根信号线和一根信号返回线而构成共地的传输形式, 这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。

   4) 传输距离有限,最大传输距离标准值为50英尺,实际上也只能 用在50米左右。

    针对RS-232-C的不足,于是就不断出现了一些新的接口标准,RS-485就是其中之一,它具有以下特点:

    1. RS-485的电气特性:逻辑“1”以两线间的电压差为+(2—6) V表示;逻辑“0”以两线间的电压差为-(2—6)V表示。接口信号电平比RS-232-C降低了,就不易损坏接口电路的芯片, 且该电平与TTL电平兼容,可方便与TTL 电路连接。

    2. RS-485的数据最高传输速率为10Mbps

     3. RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干能力增强,即抗噪声干扰性好。     
       4. RS-485接口的最大传输距离标准值为4000英尺,实际上可达 3000米,另外RS-232-C接口在总线上只允许连接1个收发器, 即单站能力。而RS-485接口在总线上是允许连接多达128个收发器。即具有多站能力,这样用户可以利用单一的RS-485接口方便地建立起设备网络。

    因RS-485接口具有良好的抗噪声干扰性,长的传输距离和多站能力等上述优点就使其成为首选的串行接口。 因为RS485接口组成的半双工网络,一般只需二根连线,所以RS485接口均采用屏蔽双绞线传输。 RS485接口连接器采用DB-9的9芯插头座,与智能终端RS485接口采用DB-9(孔),与键盘连接的键盘接口RS485采用DB-9(针)。   3. 采用RS485接口时,传输电缆的长度如何考虑?

    在使用RS485接口时,对于特定的传输线经,从发生器到负载其数据信号传输所允许的最大电缆长度是数据信号速率的函数,这个 长度数据主要是受信号失真及噪声等影响所限制。下图所示的最大电缆长度与信号速率的关系曲线是使用24AWG铜芯双绞电话电缆(线 径为0。51mm),线间旁路电容为52。5PF/M,终端负载电阻为100欧 时所得出。(曲线引自GB11014-89附录A)。由图中可知,当数据信 号速率降低到90Kbit/S以下时,假定最大允许的信号损失为6dBV时, 则电缆长度被限制在1200M。实际上,图中的曲线是很保守的,在实 用时是完全可以取得比它大的电缆长度。 当使用不同线径的电缆。则取得的最大电缆长度是不相同的。例 如:当数据信号速率为600Kbit/S时,采用24AWG电缆,由图可知最 大电缆长度是200m,若采用19AWG电缆(线径为0。91mm)则电缆长 度将可以大于200m; 若采用28AWG 电缆(线径为0。32mm)则电缆 长度只能小于200m。

点击此处查看原文 >>

系统分类: 接口电路   |    用户分类:    |    来源: 转贴

评论(1) | 阅读(440)
发表于:2008-3-14 13:38:51
标签:杂七杂八  

1

一些资料

在匠人那里找到一些资料,太多了,转不上来,粘个链接,有时间慢慢看!

中断应用相关文章

http://blog.21ic.com/user1/349/45557.html

 

ADC相关文章

http://blog.21ic.com/user1/349/45556.html

汽车电子相关文章

http://blog.21ic.com/user1/349/45555.html

电磁炉相关文章

http://blog.21ic.com/user1/349/45553.html

PWM相关文章

http://blog.21ic.com/user1/349/45550.html

软件算法相关文章

http://blog.21ic.com/user1/349/45548.html

编程规范相关文章

http://blog.21ic.com/user1/349/45547.html

单片机指令系统相关文章

http://blog.21ic.com/user1/349/45546.html

 

 

 

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 整理

评论(0) | 阅读(361)