中语言微电脑编程系统使用说明---中国人自已的微电脑编程语言- 1 -最近几年,中国的微电子迅猛发展,微电脑应用已进入千家万户,所有的家电几乎每台都装有微电脑芯片,例如电饭煲,电视机,电风扇等。
不只是在民用方面,各个行业的微电脑应用也是是新月异:工业应用,医疗器械,航天应用等等。
可以说,现在社会微电脑应用已是无所不在!然而,中国的微电脑编程语言一直是英文为主的,这给一些英文基础不太好的微电子爱好者设定了一定的障碍。
在中国,有数亿万计的微电子爱好者,但从事微电脑编程的人员占不到十分之一,很大一部分就是因为编程语言的缘故。
不只是工作方面,这些微电子爱好者有好多想法,如果得以实现,可以发明出很多产品,但是就是因为英文基础不态好的原因造成的微电脑编程不能进行,从而给研发产品造成了一定的困扰,大的方面说,也阻碍了我国的电子信息化的发展。
在美国等一些国家,普通人员不要专业知识就可以学编程,因为编程语言是他们的,所以就和写文章一样,很容易的。
为此,我们经过多年努力,终于开发出一套完整的中文微电脑编程系统,取名中语言微电脑编程系统。
中语言微电脑编程系统是基于C语言基础上结合中文特点而开发的一套完整的微电脑单片机- 2 -中文编程系统,希望能给我国电子信息化发展尽一份微薄之力!中语言微电脑编程系统有以下特点:1,全中文语法结构与变量,完全符合中国人的书写与阅读习惯。
2,基于C语言但结合了中国人的语法词汇,无需生记硬背语法,用的时候看一下立即明白意思。
3,无论年龄,无论专业,无论性别,只要是微电子爱好者即可学会。
人人可学,人人可用。
4,一天入门,三天上手,简单易学。
5,重简去繁,在C语言上一些复杂的用不上的语法完全去掉,只留下简单实用而且常用的,当- 3 -然这是建立在不影响微电脑应用的基础上。
使得学习起来更加容易。
同时我们开发了中语言微电脑编程系统编程软件,系统软件具有如下特点:1,全中文友好界面,无需英语基础即可书写内容。
2,内嵌编译器,一键编译出对应的HEX文件,并显示出对应的目录,方便易找到HEX文件。
3,内附有教程,一看即会。
4,代码折叠功能,复杂较长的函数可以折叠起来,读起来更方便。
5,左栏有双击打开最近文件功能,简单实用。
- 4 -中语言微电脑编程系统还有很多优点等着您去发现,当然,我们这套系统也是一套全新的系统,有些问题和不足之处,如果您发现了,请告诉我们,以方便改进。
- 5 -中语言微电脑编程系统―――使用教程第一节,新建项目目录:首先在D:盘或E:根目录下新建一个文件夹:我的项目,然后在我的项目文件夹中新建一个文件夹:项目1.这样我们就可以方便的保存将要新建的项目:- 6 -第二节,打开软件:打开我们的编程系统软件,将会出现如下画面:- 7 -第三节:新建我们的工程项目:- 8 -点击文件-新建工程,将会出现如下画面:这是在提示我们选择相关的微电脑芯片,以提供正确的编译方式,选好以后点击确认选择,将会出现如下画面:- 9 -正确填入我们需要的项目名字:我这里填的是点亮第一盏红灯,点保存,将会出现如下画面:- 10 -可以看到,已有了第一行代码,这是引入头文件的,不用我们再写了。
接下来就正式进入我们的第一个项目了,这里我们要先从最简单的入手,也就是点亮一个我- 11 -们的红灯,代码很简单,请输入以下代码:#端口再定义红灯控制脚 P1_1函数主程序()红灯控制脚 = 低;结束函数这里第一行我们就是把单片机的P1_1口再次定义一下,定义为我们方便看懂的红灯控制脚,这样对于我们后面查询代码时非常有用。
第二行函数主程序,这个不用说了,也就是说是主程序的开始,第三行,红灯控制脚 = 低;这句代码说的是将这个红灯控制脚置为低电平,可以看出,这个脚接低电平时红灯会亮。
第四句是结束函数,也就是主程序结束了。
怎么样,很简单吧,那么倒底这- 12 -几句代码是不是有用呢?我们点一下,这时出现如下画面:可以看出,在下面项目编译提示信息中已出现了.hex文件编译成功的信息,并给出了文件目- 13 -录,那么这个文件倒底能不能运行呢?我们必须实践一下,打开仿真软件PROTEUS,这可是个好软件,在项目调试过程中非常有用,这里晶体选12M,装入我们刚生成的HEX文件,点运行,可以看出,LED 灯亮了。
是不是很容易呢?不过万里长征走了第一步,由浅入深慢慢来,接下来我们要让这个灯一直闪,- 14 -一秒一次,我们要有个思路,写代码没思路不行,盲目的写最后写出来的很乱的。
那么要想让灯闪,那就让红灯控制脚先置高或低,延时一下,再置高或低,这样是不是就可以了呢?写入如下代码:#端口再定义红灯控制脚 P1_1声明无返回值延时_毫秒(整数型毫秒);函数主程序()红灯控制脚 = 低;延时_毫秒(1000);红灯控制脚 = 高;延时_毫秒(1000);- 15 -结束函数函数延时_毫秒(整数型毫秒)短整数型计次变量;多任务自动循环(毫秒递减)单任务依次循环(计次变量=0;计次变量<120;计次变量递加);任务安排完毕结束函数- 16 -整个代码加了个延时函数,所以要在主函数上面声明一下,这个函数是没有返回值的,所以要声明为无返回值的。
先看一下延时函数,函数延时_毫秒(整数型毫秒)这里先声明了一个局部变量,毫秒,表示我们要延时多长时间,如果延时1毫秒,到时就填1就可以了,延时1000毫秒也就是1秒,填1000就可以了。
再看下一句:短整数型计次变量;这里也是声明了一个变量,短整数型的,用于延时循环。
再看一下这一句:单任务依次循环(计次变量=0;计次变量<120;计次变量递加);这就是说当计次变量小于120时,计次变量就会递加1。
这里是12MHZ的晶体,大概延时时间在1个毫秒。
再看上面一句多任务自动循环(毫秒递减),也就是说这里面的数开始减1,当减为0时自然就结束这个循环。
这里解释一下单任务和多任务,单任务就是只运行这个函数本身的任务,多任务就是包除自身任务外还包含有其它任务运行,后面跟有任务安排完毕的句子。
好,点一下编译,装入PROTEUS运行,好像不对,亮一下就灭了,不是我们想的一直闪,如果我们想一直闪怎么办?很简单,再用多任务自动循环(真)就可以了,将代码改一下:#端口再定义红灯控制脚 P1_1- 17 -声明无返回值延时_毫秒(整数型毫秒); 函数主程序()多任务自动循环(真)红灯控制脚 = 低;延时_毫秒(1000);红灯控制脚 = 高;- 18 -延时_毫秒(1000);任务安排完毕结束函数函数延时_毫秒(整数型毫秒短整数型计次变量;多任务自动循环(毫秒递减)单任务依次循环(计次变量=0;计次变量<120;计次变量递加);任务安排完毕结束函数- 19 -点一下编译,装入PROTEUS运行,效果出来了:接下来我们要让红灯用中断来闪烁,因为中断是微电脑必须的一个功能,新建项目并输入以下- 20 -代码:#端口再定义红灯控制脚 P1_1短整数型计数器;函数初始化_定时器0_16位(无类型)模式控制寄存器 = 0x01;低位初装值_定时器0 = 0xD8;高位初装值_定时器0 = 0xF0;中断允许_定时器0 = 真;总中断允许 = 真;开启定时器0 = 真;- 21 -结束函数函数中断后事件_定时器0(无类型) __中断号 1中断标志0 = 假;低位初装值_定时器0 = 0xD8;高位初装值_定时器0 = 0xF0;计数器递加;如果(计数器>=100)- 22 -计数器=0;红灯控制脚 = 取相反 (红灯控制脚);结束如果结束函数函数主程序()初始化_定时器0_16位();单任务自动循环(真);结束函数看一下上面的中断定时器初始化,这里是12MHZ晶体,所以中断时间大概为10毫秒。
函数内- 23 -容很简单的,就是几个中断必要的条件。
中断后的事件加了一个计数器,当计数器大于100时(也就是1秒钟),把红灯控制脚翻转,也就是低变成高,高变成低,这样就可以持续的闪烁了。
主程序很简单的,就两句话。
下面是运行效果:学以致用,再好的东西用不上那就等于没有学。
下面我们来模拟简单的交通灯程序,我们先理- 24 -一下思路,交通灯有红,黄,绿三灯组成,红灯亮完,黄灯亮,黄灯亮完绿灯亮,反之一样,不停循环。
请输入以下代码:#端口再定义红灯控制脚 P1_1#端口再定义黄灯控制脚 P1_2#端口再定义绿灯控制脚 P1_3声明无返回值延时_毫秒(整数型毫秒);函数主程序()多任务自动循环(真)红灯控制脚 = 低;- 25 -延时_毫秒(9000);红灯控制脚 = 高;黄灯控制脚 = 低;延时_毫秒(3000);黄灯控制脚 = 高;绿灯控制脚 = 低;延时_毫秒(9000);绿灯控制脚 = 高;黄灯控制脚 = 低;延时_毫秒(3000);黄灯控制脚 = 高; 任务安排完毕- 26 -结束函数函数延时_毫秒(整数型毫秒)短整数型计次变量;多任务自动循环(毫秒递减)单任务依次循环(计次变量=0;计次变量<120;计次变量递加);任务安排完毕- 27 -结束函数程序很简单,不再解释,这也是全中文的好处!点击编译,并装入PROTEUS,可以看到以下效果:到了这时候,我们就要学习一下按键控制了。
当按键1按下的时候红灯亮,当按键2按下的时- 28 -候绿灯亮,按键控制也有两种方式,我们先看第一种查询方式,也就是不停的查询按键的端口状态,请输入以下代码,:#端口再定义按键1 P3_2#端口再定义按键2 P3_3#端口再定义红灯1 P1_1#端口再定义绿灯2 P1_2声明无返回值延时_毫秒(整数型毫秒);函数主程序()红灯1 = 低;- 29 -多任务自动循环(真)如果(按键1==低)延时_毫秒(10);如果(按键1==低)红灯1 = 高;绿灯2 = 低;结束如果- 30 -结束如果如果(按键2==低)延时_毫秒(10);如果(按键2==低)红灯1 = 低;绿灯2 = 高;结束如果- 31 -结束如果任务安排完毕结束函数函数延时_毫秒(整数型毫秒)短整数型计次变量;多任务自动循环(毫秒递减)单任务依次循环(计次变量=0;计次变量<120;计次变量递加);任务安排完毕结束函数同样,代码很简单,这里要解释的就是这个延时10毫秒,为什么要这样?因为我们的单片机- 32 -周围存在很多电磁波干扰,所以延时一点时间,如果这个端口还是这个状态的话,那就表示是真的按键了,如果延时后端口状态变化了,就说明这个是干扰,就不处理这次按键的结果了。
这种方法叫去抖动或消抖动。
编译并装入PROTEUS,看一下效果:上面演示了按键的查询,下面要进行按键中断演示,因为我们的中断反应很快,而且运行过程- 33 -中点用的时间很小,这就是中断的好处了,原理是当中断来时,事先可以设定高中断还是低中断,我们这里设定低中断,也就是按键按下以后端口为低,引发中断,从而控制灯的状态,请输入以下代码:#端口再定义按键1 P3_2#端口再定义按键2 P3_3#端口再定义红灯 P1_1#端口再定义绿灯 P1_2短整数型按键状态位;声明无返回值延时_毫秒(整数型毫秒);函数初始化_硬件中断()- 34 -触发方式选择_硬件0 = 1;中断允许_硬件0 = 真;触发方式选择_硬件1 = 1;中断允许_硬件1 = 真;总中断允许 = 真;结束函数函数中断后事件_硬件0() __中断号 0- 35 -延时_毫秒(10);如果(按键1 == 低)按键状态位 = 1;结束如果结束函数函数中断后事件_硬件1() __中断号 2 延时_毫秒(10);- 36 -如果(按键2 == 低) 按键状态位 = 0;结束如果结束函数函数主程序()初始化_硬件中断();多任务自动循环(真)- 37 -如果(按键状态位 == 1)红灯 = 高;绿灯 = 低;否则红灯 = 低;绿灯 = 高;结束如果- 38 -任务安排完毕结束函数函数延时_毫秒(整数型毫秒)短整数型计次变量;多任务自动循环(毫秒递减)单任务依次循环(计次变量=0;计次变量<120;计次变量递加);任务安排完毕结束函数这里我们用了两个硬件中断,当中断来时,同样延时10毫秒检测一下端口状态,也是起延时- 39 -消抖的作用。