EDN首页   博客首页

0

关于投票
C语言外部变量的使用以及erxtern的用法

C语言的外部变量的定义和引用对初学者来说,是个难点.

对外部变量的说明和定义不是一回事.对外部变量的说明,只是声明该变量是在外部定义过的一个全局变量..在这里引用.而对外部变量的定义,则是要分配存储单元.一个全局变量只能定义一次,却可以多次引用.

用extern声明外部变量,目的是可以在其它的文件中调用.具体使用见下面的例子:

                file1.c                                                       file2.c

        int i,j;//定义全局变量                                extern   int i,j;//外部变量说明

        char c;                                                        extern char c;

       void func()                                                    void func1()

     {                                                                     {

         }                                                                    }

在file2.c中对外部变量i,j,c进行了说明,就可以直接调用file1.c中定义的全局变量了

静态变量static的使用

有时在中断程序中定义了变量,不希望每次进入中断程序,变量就被赋初值.这时就要使用static变量.静态局部变量在编译时赋初值,既只赋初值一次.见下例:

  void serial_interrupt() interrupt 4 using 3

{ static uchar i="0";

   i++;

}

上例中,编译时,i被赋初值0,以后每进入一次中断,i+1,而不是每次进入中断,i都被请零,再加1

如果在a.c中要调用在b.c中定义的函数func(),需要在a.c中声明该函数,表示该函数在别的源文件中定义。函数是可以互相调用的,因此函数都具有外部存储种类的属性。原则上调用一个在在本程序模块文件以外的其他模块文件所定义的函数,必须用关键字extern说明被调用函数是一个外部函数。实际使用中可以省掉extern。即下面两个函数声明没有明显的区别:

extern int f();和int f();

系统分类: 单片机
用户分类: 单片机和C语言
标签: 无标签
来源: 原创
发表评论 阅读全文(168) | 回复(1)

4

关于投票
KEIL中如何用虚拟串口调试串口程序

以前没接触过串口,一直都以为串口很复杂。最近在做一个新项目,用单片机控制GSM模块。单片机和GSM模块接口就是串口。调试完后觉得串口其实很简单。“不过如此”。这可能是工程师做完一个项目后的共同心态吧。下面详细介绍下如何用虚拟串口调试串口发送接收程序。

需要用到三个软件:KEIL,VSPD XP5(virtual serial ports driver xp5.1虚拟串口软件),串口调试助手。

1、首先在KEIL里编译写好的程序。

2、打开VSPD,界面如下图所示:点击看大图

左边栏最上面的是电脑自带的物理串口。点右边的add pair,可以添加成对的串口。一对串口已经虚拟互联了,如果添加的是COM3、COM4,用COM3发送数据,COM4就可以接收数据,反过来也可以。

3、接下来的一步很关键。把KEIL和虚拟出来的串口绑定。现在把COM3和KEIL绑定。在KEIL中进入DEBUG模式。在最下面的COMMAND命令行,输入

MODE COM3 4800,0,8,1(设置串口3的波特率、奇偶校验位、数据位、停止位,打开COM3串口,注意设置的波特率和程序里设置的波特率应该一样)

ASSIGN COM3 <SIN> SOUT(把单片机的串口和COM3绑定到一起。因为我用的单片机是AT892051,只有一个串口,所以用SIN,SOUT,如果单片机有几个串口,可以选择S0IN,S0OUT,S1IN,S1OUT。)

4、打开串口调试助手

可以看到虚拟出来的串口COM3、COM4,选择COM4,设置为波特率4800,无校验位、8位数据位,1位停止位(和COM3、程序里的设置一样)。打开COM4。

现在就可以开始调试串口发送接收程序了。可以通过KEIL发送数据,在串口调试助手中就可以显示出来。也可以通过串口调试助手发送数据,在KEIL中接收。

这种方法的好处是不用硬件就可以调试。这是网上一篇文章介绍的方法,联系我实际的使用做了整理。有用的着的人就不用继续摸索了

系统分类: 单片机
用户分类: 单片机和C语言
标签: 虚拟串口,KEIL
来源: 原创
发表评论 阅读全文(399) | 回复(1)

0

关于投票
USB转串口驱动程序
现在很多电脑主板不带串口接口,扩展串口最方便的办法就是买USB转串口线。市面上这种产品便宜的一般15元左右,好点的在50元左右。强烈建议不要买便宜货,大部分都不能用。我买的是Z-TEK(力特)USB2.0转串口线。觉得还不错,推荐一下。
系统分类: 资源共享
用户分类: 单片机和C语言
标签: 无标签
来源: 原创
发表评论 阅读全文(863) | 回复(2)
总共 , 当前 /