1.学习PIC12针脚定义

针脚1及针脚8可接电源+5V和地线。针脚2.3可外接晶振。

针脚4为复位脚,当单片机正常运行时接高电平,若有一个低电平输入,单片机便复位。

针脚5则为单片机的I/O脚,可控制它为输入或输出,输入0,输入1,输出0,输出1.(0即为低电平,1即为高电平)

针脚6.7也可设置输入输出,可以控制继电器,LED灯,A/D转换器,连接喇叭输出音乐等。

2.单片机的寄存器

寄存器又称RAM,单片机的大部分工作在写入或读出寄存器。寄存器是一个能存储8位二进制的数据的单元,而每个单元都有自己的地址编码(地址编码则为十六进制)。

单片机有有专用寄存器和通用寄存器之分。

专用寄存器即该寄存器的功能已由系统分配完成,而通用寄存器则是没有事先设定,可在编程序中随机使用。

该图为PIC12CE519的ram地址地图,其中00h到06h都是专用寄存器。

该寄存器里的06h为GPIO,该寄存器内的数据可控制针脚的电平高低,上边说过每个寄存器可存储8位二进制数据,一位二进制数据便可控制一个针脚的电平,例如常数2的八位二进制为00000010,即可得数据1对应的GP1针脚输出高电平,而其他针脚输出低电平。

PS:需定义GP1为输出脚,否则无法控制GP1的电平,其他的针脚亦是如此。

3.单片机的指令

movlw 02H
常数2进入w,H表示该数据为16进制
movwf GPIO
将W复制到GPIO中,GPIO中便有了00000010这样的数据,GP1也就输出高电平

上文曾提出过PIC单片机需先定义针脚输入输出,在这就要引进寄存器TRIS的使用。在TRIS寄存器中,同样是存储8个二进制数据对应针脚,分别定义针脚的输入输出,0即定义针脚为输出,1即定义针脚为输入。假设定义GP1,GP2为输出,则需要向TRIS写入二进制11111001,换算十六进制为F9H。

movlw 0F9H     F9H写入W
movwf TRISA    W内的数据复制如TRIS注意:PIC12的单片机必须写成
movlw 0F9H
tris GPIO

bsf和bcf指令可以控制某个针脚的电平,bcf为降低某针脚的电平,又称清除;bsf为升高某针脚的电平,又称置位。

学习nop指令,nop可以让单片机处于空白运行状态,常用于延时的应用。

movlw OF9H
tris GPIO     定义GP1,GP2为输出针脚
bsf GPIO,GP1   升高GP1的电平,例如可点亮LED灯
nop         延时
nop
nop
nop
nop
bcf GPIO,GP2     降低GP1的电平,如熄灭LED灯
nop
nop
nop
nop

说到延时,于此,便要引进机器周期的概念,我们日常使用的LED灯都有闪烁的周期,而我们便可以用nop控制点亮熄灭LED灯的间隔,以达到控制lED闪烁。

PIC单片机里,一般的指令都为1个机器周期,而goto(即重复至某一段指令)则为2个机器周期

PIC机器周期=4/振荡频率(微妙)

已知外部晶振的频率为4Mhz,则可求出一个机器周期为4/4Mhz=1微妙

即单片机执行一个普通的指令的时间为1微妙

我们便可设计出一个频繁闪烁的LED灯

movlw 0F9Htris GPIO        控制GP1,2为输出针脚
myWAVE:bsf GPIO,GP1     点亮LED灯nopnopnopnopnopnopnopbcf GPIO,GP1     熄灭LED灯nopnopnopnopnop
goto myWAVE         单片机重复myWAVE的指令,而不是读写下一行指令

上面的代码可以看出点亮和熄灭LED灯之间间隔了8个机器周期,即8微妙,可得f=1/16=62.5Khz

当频率比较低时,便能接上一个喇叭,听到声音。

当然,频率太低的时候,需要使用大量的nop指令进行延时,这个时候就要引进incfsz指令和decfsz指令。前者是对某一寄存器内的数据进行加1,当检测到加1便至寄存器的极限时(255),下一条指令跳过,不读取下一条指令。而后者则是减1,减至为0时跳过一下条指令。

我们需要大量延时的时候,例如延时24086个周期时,用16进制表示即为5E16H

yanshi:movlw   5EH   movwf   0BH     movlw   16Hmovwf   0AH       将5E和76分别写入0BH和0AH两个通用寄存器
jixu:decfsz    0AH      开始延时,给0AH内的数据-1。当减至0时便跳过下一条指令,goto不再运行goto      jisu
jisu1:decfsz   0AHgoto      jisu1        nop

疑问:1.似乎这跳指令并没有考虑到goto的机器周期

2.5E放入0BH,那么0BH内的数据不应该是94吗,那么decfsz 0BH只有94次。

call指令和return指令可以让我们做出程序中内嵌另一个程序,能将一段常用的指令做成子程序,在需要该子程序时,用call命令单片机读取该子程序,子程序最后添加return便可回到主程序,这样便可大大减少汇编里的工作量,并简化程序。

注意可在子程序再嵌套子程序,但这根据单片机设计而有限制。

LEDshansuo:bcf   GPIO,GP1nopnopnopnopnopnopbsf    GPIO,GP1nopnopnopnopnopnopreturn
call LEDshansuo

PIC单片机的入门认识(以PIC12为学习目标)相关推荐

  1. ioca0中断 pic单片机_PIC单片机

    PIC 单片机 为了给前一段时间学习 PIC16F616 型单片机的一个总结和方便大家的交 流 , 我写了这篇关于 PIC 单片机的学习心得 , 都是在看了手册和编程调试后用自 己的语言组织的 , 其 ...

  2. PIC单片机入门笔记(新手学PIC必看)——基于PIC16F886

    学习PIC单片机的目的是打算做一款433M无线开关,之前学习过51与AVR单片机,对8位单片机有一些基础,不过PIC单片机还是第一次接触,先从入门开始吧!入门实验最经典的是点亮一只LED了,这次也它为 ...

  3. PIC单片机入门教程(二)—— 安装集成开发环境(MPLAB X IDE)

    PIC单片机入门教程(二)-- 安装集成开发环境(MPLAB X IDE) 教程中使用的电脑运行Windows 10 专业版 64位系统 1.下载 MPLAB X IDE v4.05 历史版本:htt ...

  4. PIC单片机入门_输入输出端口详解

    1.引言: PIC单片机引脚图: 在PIC16F87X 单片机中,28引脚型号的单片机有3 个I/O端口,分别是RA.RB和RC:40引脚型号单片机有5个 I/O端口,分别是RA.RB.RC.RD和R ...

  5. PIC单片机入门_指令系统

    1.前文回顾 前面学习了PIC单片机的系统框架,也介绍了程序存储器.数据存储器的组织形式.这里需要补充一点的就是寻址方式,之前仅仅提到了立即数寻址.直接寻址.其实还有几个比较重要的寻址方式,PC相对寻 ...

  6. PIC单片机入门_框架与存储器

    1.PIC16F877A单片机框架 1.1 为何性能如此之高? PIC单片机之所以有很高的性能是因为其具备如下特性: 内部为哈佛结构.寄存器文档.大多数单指令周期.指令流水线操作.长字型指令.指令数很 ...

  7. ioca0中断 pic单片机_单片机入门知识-PIC为例程序.ppt

    PIC单片机原理及应用 内容提要 单片机概述 PIC单片机的特色 PIC单片机的程序设计 单片机概述 单片机正名为:微控制器 --MCU ,MicroController Unit 单片机概述 何为单 ...

  8. PIC单片机入门_中断系统详解

    1.中断的基本概念 当单片机正在执行程序时,出现了某些特殊状况,例如定时时间到.有键盘信号输入等,此时CPU须要暂时停止当前的程序,而转去执行处理这些事件的程序,待执行完这些特定的程序之后,再返回到原 ...

  9. PIC单片机入门_定时器/计数器TMR0详解与实例

    1.前言: PIC 系列单片机内部配备有数量不等的定时器/计数器模块:例如PIC17CX系列和PIC18CX系列都都配置了4个定时器/计数器模块:而PIC16F87X系列都配置了3个定时器/计数器模块 ...

  10. pic12f1823单片机入门_单片机入门案例:使用PIC单片机制作声控拍手开关

    拍手开关对于初学者来说是一个很有趣的单片机方案.它以拍手的声音打开和关闭电器.在本文中,英锐恩单片机开发工程师们将使用PIC单片机制作一个简单的拍手开关,当它连续检测到两个拍手声音时,该开关便会运行. ...

最新文章

  1. 高级转录组分析和R数据可视化(2020.2,课程推迟,可先报名,时间另行告知)
  2. Java异常以及继承的一些问题
  3. ECCV18 Oral | MIT谷歌视频运动放大让计算机辅助人眼“明察秋毫”
  4. 如何正确刷题计算机考研,2020考研:4个方法教你数学如何正确刷题!
  5. css 实现table 隔行变色
  6. LeetCode题库第1题 两数之和
  7. vsphere虚拟克隆虚拟服务器,vSphere实战攻略2:虚拟机模板与克隆
  8. 科研项目 | 深度参与前沿课题研究,全英华人教授协会(ABCP)资深学者亲授
  9. (六)企业部分之jdk
  10. Datawhale 暑期组队学习计划
  11. 炫彩渐变海报素材模板,可运用到海报、电商设计等方面
  12. jQuery LightBox插件原理的简单实现
  13. 河南计算机对口升学题,河南省计算机对口升学专基模拟试题(四)[1]
  14. html调查问卷页面,html+js 问卷调查页面的展示以及form提交
  15. 【AR实验室】mulberryAR : ORBSLAM2+VVSION
  16. 分页插件Kaminari
  17. oracle+linux+oel+6.9,Oracle 11g(11.2.0.4) install on OEL6.7
  18. php获取文章内容,php文章内容抓取
  19. 微信小程序基于最新版1.0开发者工具分享-小试牛刀(视频) 发布流程
  20. android 扇形菜单动画,ArcMenu,仿path中带动画效果的扇形菜单

热门文章

  1. 《五分钟商学院》个人篇学习总结(上)
  2. 劲舞团显示正在登录message 服务器,[新手]劲舞团2.0之表情和message系统
  3. 除了PMP,项目经理还要考哪些证书?
  4. 【线性代数】矩阵的特征值分解(对角化、谱分解)
  5. 保险污名化?区块链赋予保险的「四个机会」
  6. Android App Bundle出来了,App加壳技术不能用了怎么办?
  7. oracle 给权限语句,oracle权限语句大全
  8. linux运行.xpi,XPI 文件扩展名: 它是什么以及如何打开它?
  9. Kafka运维大全来了!优化、监控、故障处理……
  10. 2021年高压电工考试及高压电工模拟试题