前段时间,小弟闲逛,偶发现一论坛,一前辈讲pic系列,讲得那个通俗啊!估计识字的都能看的懂,好东西不敢独享,拿出来与大家分享,未经作者同意擅自转载,请作者谅解,不过既然前辈那能这么无私,我这样也不为过吧,呵呵!
闲话少说,上菜了!
单片机入门不难------谈PIC系列(转自矿石收音机论坛---崂山)
坛子里的老兄小弟,如果你已经多次想进单片机之门而未入,如果你有很多空闲时间想打发,如果你玩收音机感到疲劳想换个口味,如果。。。
那就听小弟我白话白话,反正我们这些老大难也没有什么重要的事情做。。。。
闲言少许,话说人间事物的学习,不外两类:一类入门易,精通难比如矿石机,再比如练书法谁都会写两下,可写好却不是一朝一夕的事儿。另一类则入门难精通易,比如超外差收音机,学会需要各种放大、振荡、反馈、混频、中频、统调等等,但是一旦你学会,做出一个高质量的收音机,确也不是难事。单片机属于后者,所以无论如何,你得用些时间,学习一些新名词并理解,甚至还得花一些小钱。但是,一旦你掌握,其乐趣也像收音机一样,很有吸引力的。本故事说给一点也不懂计算机,甚至数字电路的引引道。一般入门应该有保障。
改为: 本故事说给懂电工、电子、逻辑电路的老家伙和半老家伙,如果对电子一窍不通人讲那我劝你也别瞎子点灯了,要是边讲基础边讲pic这书就不知唱到何年何月啦。
单片机不同于收音机,收音机的任务最终就是听好声音一个,单片机可以做很多事情,要你来安排它的工作。安排它就先的认识它,熟悉它
请看图1
这个8条腿的小螃蟹就是我们的第一顿饭,只要把它吃下去,以后的大餐就好办了。
第1、8条腿接电源 +5V 和 地线。头两条腿是螃蟹钳子,好吃的很。 现在剩下了 6 条腿
第2、3条腿 使用时外接一个晶振的东西 我们接一个 4 MHz的。
第4条腿是复位脚,是一个信号输入脚。单片机正常运行时接高电平。当有一个低电平脉冲输入到这个脚时单片机就复位。所谓复位就是单片机内部所有的工作部件统统回到规定的状态,程序也复位到头一句上开始逐条运行。例如,你设计的一个报警锁定的 LED红灯亮后,当需要解除报警时,用一个按钮给这个脚瞬时接地一下,相当于给它一个夫脉冲,系统就复位了,led灯就熄灭了,程序从头开始。
以上5个脚,几乎所有单片机都有,包括世界上最复杂的,和世界比较简单的单片机-----PIC12CE519
轮到底几条腿啦?奥是第5条腿,这条叫单片机的 I/O 脚。就是输入输出脚。你可通过程序动态地控制它作为输入或输出,作为输出时可以程序控制它的输出电平为高1或低0。所以,他的工作状态有四种:输入0,输入1,输出0,输出1
剩下的两条腿和第5脚功能一个样。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
由于本人一向散漫,随写随发的感觉不错,等到以后再整理不迟。发现错误不能编辑时在下一贴里纠正
这回再说一个程序转向的语句,goto 指令,学过basic 和 c 等语言的对它不陌生。
单片机对程序的执行是逐句自上而下进行。当它运行到某个位置,如果你不希望继续运行它下面的语句,而是希望它无条件的强行转到某一句上,就可以使用goto语句。
我们还是通过例子来说明goto 的使用方法。
已知外部晶振的频率为4 MHz, 设计程序从pic12ce512 单片机的GP1管脚上输出一个方波信号,信号频率固定并计算出频率的值。
movlw 0F9H '常数进W
tris GPIO '把W内的数复制到TRIS ,GP1 GP2为输出,其他为输入
myWAVE: bsf GPIO,GP1 '管脚GP1输出高电平点亮LED灯(如果你已经接上灯的话)
nop
nop
nop
nop
nop
nop
nop
bcf GPIO,GP1 '管脚GP1输出低电平关闭LED灯
nop
nop
nop
nop
nop
goto myWAVE 'myWAVE是标号,某行必须有这个标号,否则程序通不过
nop '由于goto的存在,以下语句得不到运行
nop
nop
当程序自上而下运行到goto 语句时, 不再继续运行它底下的语句, 而是让程序强行转向到标号为myWAVE的语句上,并继续运行.
这样一来的结果,程序会永远在标号myWAVE的这一句 bsf GPIO,GP1 到goto之间循环, 打转转.
客观运行的结果是 GP1管脚电平不停地一会高,一会低, 就输出了方波信号.
要计算方波的频率,我们必须知道单片机每运行一条指令需要多少时间.这个时间的单位不以通常的秒 毫秒 或微秒作为单位, 而是以”机器周期” 为单位. 以后凡是我们讨论单片机内部的时间问题都要以机器周期作为时间单位. 至于一个机器周期究竟是多少微妙或毫秒, 取决于单片机的品牌和振荡频率频率大小, 等一会我们再用公式计算我们PIC12CE512在4MHz震荡频率下的机器周期是多少个微妙。
我们先看看我们的程序中GP1脚的高电平低电平都是用了多少个机器周期.
PIC单片机所有指令都是单机器周期的指令,
例外的情况是goto 语句要用2个机器周期 还有一个call指令用的时间也不完全是一个机器周期(待后续)
其他品牌的某些单片机可不是这样,一条指令往往要用几个周期……
从bsf 到bcf有8个指令,都是单周期指令,所以GP1高电平时间长度是8个机器周期
从bcf 到bsf有7条指令,其中6条是单周期指令 1条双周期指令(goto). 所以GP1低电平时间长度也是8个机器周期
这样,我们输出方波的周期长度就是16 个机器周期.
Pic品牌的机器周期 = 4/振荡频率 (公式)
所以,在我们的例子当中 1个机器周期=4/4MHz= 1 uS
也就是说,我们的例子中,执行一条指令仅需要1微秒的时间.
这样,我们输出的方波周期就是16微秒, 频率是 f =1/16 =0.0625 兆赫 =62.5 KHz
如果这个方波的频率比较低,你再接一个扬声器到GP1脚上你就可以听到声音了
频率降低到几赫兹的时候, 接一个led灯, 就会不停的闪烁.
当然, 频率太低你用的nop指令的数目会很多,程序虽简单但是臃肿, 这没有关系,我们主要是在学习程序, 弄清楚道理是目的。
要想使得程序不臃肿我们有的是办法,这就必须再学习新的指令.
如果此前我讲的你基本都弄明白了,那你现在已经抓住单片机入门的门把手了, 还需轻轻的推开.
一周热门 更多>