内容正文:
里我们准备了两个不同的程序分别来讲解。下面我们先看第一个组合按钮的用法。我们打开组合按钮的用法这个项目。好,我们打开了。下面我们就解读一下这个程序。这个程序的名字叫做组合按钮,修改SV的值。我们编译我们这个程序是成功的。首先它是有两个投影键,接下来是它的引脚定义。当然了它还用到了一个P0口。P0口我们可以用宏定义做一下,我没有做,大家可以补上。接下来是变量定义,变量定义的部分集中放在了这里。然后是送595子程序,显示一位子程序,延时10毫秒子程序,延时3毫秒子程序。下面是数据分解子程序,数据分解子程序有一点点不同,我们来说明一下。首先就是这个if语句,这个if语句的作用是干什么的呢?它是说当你的百位等于0的时候,你又没有千位,所以百位就应该不显示,符合我们正常人的习惯。他是怎么做到的呢?他是说当百位等于零的时候,让数码管显示第21个就是数组当中第21个。那我们去看一下数组当中的第21个是什么?数组当中第21个是它就是说我们的代码等于0X00。它的作用是使数码管所有的段位全部都熄灭,就什么都不亮的意思,就什么都不显示的意思。这样正好就符合我们日常生活的习惯了。同样当百位等于0,十位也等于0的时候,十位也应该熄灭,个位和小数点后边的位就不需要这一点处理了,不需要这个问题,那么SV也是一样的。接下来的是选位程序,这个我们讲过了。再往下是加一程序,后边的是显示八位置程序,再往下是简易程序。简易程序我没有编,同学们可以自己编一下。后面是主程序,主程序首先给PVSV送初值,我们这个初值送的跟项目三是一样的。在主程序当中,根据设置那个按钮的不同,就功能设置的不同,可以选择调试状态。那么在调试状态的时候就选位按钮,加一按钮和减一按钮都要进行使用。所以他们的程序就要被执行。非调试模式下就是不允许解读他们这几个按钮的值,所以只进行了数据分解和显示。八位的子程序执行组合按钮,修改SV的值的程序就是这些。如果要说它的数据传递关系相对比较简单,增加的部分主要是一个是选位按钮,有一个问号选择加一减一按钮对一个SV的值有一个设置改变,那么其他的部分跟原来的是一样的,组合按钮修改SV的值的。这种传统的编程的模式我们就讲完了。我们来讲完之后,我们来反思一下,看看这个程序。如果我们想把这个程序从头到尾读一遍的话,或者说我们寻找某一个参数的话,我们会发现它很长,找起来很麻烦。所以我们今天要推荐另外一种编程方法告诉大家。下面我们就讲解另外一种程序。他们功能是一样的,编写程序的难度也差不多。进入用按钮调节仪表显示的数据这个文件夹,打开,这是他的项目文件,打开项目文件。好,这个时候我们会看到这上面有一堆的选项卡,还有这里有一堆的子程序,我们编译一下,我们看到它是通过的。那么这个程序的解读得从什么地方开始呢?我们一个子程序一个子程序的来看,首先我们先看一下IO口子程序,IO口子程序大家可以看到,因为IO口肯定要用到单片机内部的寄存器,所以单片机的头文件被包含进来。然后是IO口的设置的指令,我们有了IO的点击文件,一定对应的也应该有它的头文件。那我们看它的头文件,这是条件编译指令,这个是它的宏定义。这个宏定义的作用就是防止头文件被重复使用用。然后就是结束条件编译指令中间定义的内容就跟前面是一样的,没有太大的差别。所以IQ点C这个投影件比较好做,直接粘过来就行,当然其他的也好做,没有难度。这是L口,然后是595.7595,首先要特别注意它用到的头文件,一个是它还会用到大面积,这个时候要用到IO口了,还用到一个岩石。那么涉及到岩石,我们就要把它给加进来。595还用到自己的变量,那么595自己用到的变量,因为别人不用这两个数组,别人不用就595会用。所以它的变量跟它的程序放在了一起。对应的子程序,有一个是送595子程序和一个显示移位子程序,这是它的点击文件。对应的头文件很简单,就是他自己的送595和显示一位。同样要记住这个是条件变异。后面的是啊宏定义做一个标志,防止这个因为通奸在很多程序里会出现,防止重复编译用。最后一个是结束编译,这是595。接下来我们看数据处理,数据处理不涉及到其他的投影键,所以我们没有银河路的投影键。但是它涉及到一个新的知识点,就是它有两个变量,这两个变量是共用的。你看它主程序里有,就是它定义的时候,这两条变量定义指令是在主程序里最先用到的,所以我们是在主程序里定义的。在主程序里定义了,那么在数据处理解析里也要用到,怎么办呢?我们在数据处理解析文件的这两条变量定义最前面加一个EXTERN,意思是外部的,也就是说在外部定义的跟它一模一样的那个部分就这么个意思。它就是外部的,也就是说在外边定义的是一模一样的,用的时候就上外边去找,不在这个子程序里面,就是这个意思。所以EXTERN不可缺少,要不然他就会认为是两个不同的变量,然后还重名,编译就不会通过了。你加上它的话,你虽然在两个地方定义的,你看这个地方定义一次,这个地方定义一次,那么程序编译的时候会认为它是一组变量,后面的数据分解子程序是一模一样的,这个部分我们没有做任何改变,对应的头文件同样要加外部,加一个外部加一个外部。当然这个外部可以不加,我们看这个外部可以不加,前面两个一定要加一个,外部要放一下,要声明一下,其实它就起了声明的作用。因为我们头文件是预编译,编译的比较早,所以要提前声明一下。最后一个我们看主程序,主程序里头有他最先用到的这两个变量。所以我们放在主程序里头,然后有个3毫秒延时,有一个显示八位的主程序,我们放到这里,然后就是送初值,功能选择按钮,功能选择按理要是等于0,然后进入调试模式,否则进入运行模式,这都是一样的。下面我们重点讲一下编译。编译由于我们的子程序很多,我们说用这种方法进行编写程序最大的好处是什么呢?我们可以一个子程序一个子程序做编译,比如说我们可以编,看到吗?第一个编译的符号是对子程序进行编译,我们编595。这个框里面是595.7,它只针对595.7有没有毛病。再看这个数据处理,它只对数据处理这个子程序进行编译。同样的道理,暗流点C它只对暗流点C这个程序进行编译,看它有没有错。但是头文件是不能编译的,这个按钮不管用。大家看一下,这个按钮不管用,头文件是不能编译,但头文件可以使用。就看一下你这个有没有错,头文件有没有错,我看一下,很简单的。然后我们每一个子程序可以单独的编译,单独的调试。所以这种编写程序的方法才是我们通用的方法,我们希望大家能多多的采用。这个是最后这个编译是把所有的都编译馆,尤其是在这个位置看到吗?是把整个项目的链接生成HEX文件最重要的部分。最后我们强调一下,我们推荐大家用这种模式编程序。好处是每一个子程序都可以单独编译。使用这种模式需要注意的是变量和子程序的时候,我们会用到一个单词叫做外部。有些变量需要声明一下,它是一个外部变量,有些子程序需要声明一下,它是外部子程序,其他的没有太大的难度。
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。