当前位置: 首页 > article >正文

通俗易懂讲PIC单片机:从一窍不通到入门进步

单片机入门不难------谈PIC系列(转自矿石收音机论坛---崂山)十年前的老帖子,讲得通俗易懂,分享之。请看图这个8条腿的小螃蟹就是我们的第一顿饭,只要把它吃下去,以后的大餐就好办了。第1、8条腿接电源 +5V和 地线。头两条腿是螃蟹钳子,好吃的很。 现在剩下了 6 条腿第2、3条腿 使用时外接一个晶振的东西我们接一个 4 MHz的。第4条腿是复位脚,是一个信号输入脚。单片机正常运行时接高电平。当有一个低电平脉冲输入到这个脚时单片机就复位。所谓复位就是单片机内部所有的工作部件统统回到规定的状态,程序也复位到头一句上开始逐条运行。例如,你设计的一个报警锁定的 LED红灯亮后,当需要解除报警时,用一个按钮给这个脚瞬时接地一下,相当于给它一个夫脉冲,系统就复位了,led灯就熄灭了,程序从头开始。以上5个脚,几乎所有单片机都有,包括世界上最复杂的,和世界比较简单的单片机-----PIC12CE519轮到底几条腿啦?奥是第5条腿,这条叫单片机的 I/O 脚。就是输入输出脚。你可通过程序动态地控制它作为输入或输出,作为输出时可以程序控制它的输出电平为高1或低0。所以,他的工作状态有四种:输入0,输入1,输出0,输出1剩下的两条腿和第5脚功能一个样。上边我们已经把8条腿消化掉了,其实我们要弄明白的也就3只腿,我们再简单一些,先整明白两条腿,即GP0,GP1.这两条腿低级一点的用法,可以控制继电器,LED灯,高级一些的用法可以进行I2C总线,RS232总线的通信,作为扩展输入可以模拟出来A/D转换器(6--7bit),可以测量一个电阻的粗略值。作为输出也可以直接推动扬声器奏出音乐。这是后话暂且不提。现在要控制使用这两只腿,我这个三脚猫功夫的说书的不得不讲一下软件了,要想讲明白软件又不得不涉及到单片机的内部结构。那位说啦,你可别提这软件和结构了,以前俺就是让它们打败的,现在听到这个心里就打鼓。嘿嘿,不要紧,果真如你所说,那你就不妨跟着我再失败一次, 反正吗多一次失败又不纳税,嘿嘿。不过你也要有思想准备,彻底弄明白是个渐进的过程。要说这程序和单片机内部结构,还真是老大难,不过蟹黄蟹肉都可都在里面。我现在要是给你说PIC单片机是哈佛结构的,51系列是冯-诺伊曼结构的,恐怕你要立马扎走人了。所以我得用点心思不让你溜号。好在PIC系列的制造商(microchip 微芯公司 美国)理解我等苦衷,全部只有35条指令,而且有一些指令我们一般很少使用,常用的也就十几句,用的时候查手册,无需记忆。就算我们两天学习一句,也就两三个月时间,总比到老了还怕它们强啊。废话少说先看下面的两个例语:my_name006: movlw02h '常数2进入w movwfGPIO 'W 的数进入 寄存器GPIO这就是我们编的程序里的两个句子,也叫源程序。有以下特点每行只能写一句话每句话由四部分组成:标号:操作指令 操作数 '程序注释下面我结合例子把这四部分解释一下。第一部分 my_name006: 叫做标号,它是由字母或数字组成,由冒号结束。标号可有可无,比如第二句就没有标号。第二部分movlw 叫做操作指令。它是必须有的,不能省略。PIC 系列的单片机共有 35 条指令。第三部分02h 叫做操作数。有的指令没有操作数或者操作数是默认的,也不用写。第四部分是程序注释,必须以单引号开头,主要作用是提醒和备忘。注释也是可有可无。第二个例句中,省略了标号,当然注释也可以省略。他的指令是movwf, 操作数是GPIO。操作数不一定是数字,也可能是一个由字母组成的字符串。知道了语句格式以后,我们下面就学习一些常用语句。我们先把这两个例句弄清楚。这两句话的作用是把 2 这个常数写入到 GPIO 这个寄存器里。单片机里有一些部件需要我们使用和操作,都是通过读写寄存器来实现的。每个部件都对应有操控它的寄存器,例如我们要控制使用的管脚GP0,GP1 这两个管脚对应的寄存器就叫做GPIO。对GPIO寄存器读操作,实际等效察看管脚电平的高低;对GPIO寄存器相应的位写1操作,实际等校让管脚输出高电平。写0,输出低电平。每个寄存器可以储存一个八位的二进制数。这八个位的每个位都有名称,从左向右的名称是: 左端第首位名称叫D7, 左端第二位名称叫D6, 左端第三位名称叫D5, 左端第四位名称叫D4, 左端第五位名称叫D3, 左端第六位名称叫D2, 左端第七位名称叫D1, 最后一位叫D0,而每一个位对应一个管脚的电平,例如当GPIO寄存器的D0位等于1时表示管脚GP0 的电平是高电平。D0位等于0时表示管脚GP0 的电平是低电平。常数2的八位二进制表示是“00000010”所以,GPIO寄存器存放的8位2进制数的每个位的值以及管脚电平是: D7对 应于内部总线管脚的电平 D7=0内部总线管脚输出低电平 D6对应于内部总线管脚的电平 D6=0内部总线管脚输出低电平 D5对应于GP5 管脚的电平 D5=0 GP5 管脚输出低电平 D4对应于GP4 管脚的电平 D4=0 GP4 管脚输出低电平 D3对应于GP3 管脚的电平 D3=0 GP3 管脚输出低电平 D2对应于GP2 管脚的电平 D2=0 GP2 管脚输出低电平 D1对应于GP1 管脚的电平 D1=1 GP1 管脚输出低电平 D0对应于GP0 管脚的电平 D0=0 GP0 管脚输出低电平GP0---GP5管脚我们可以从上一讲的图1硬件中查出所对应的管脚。d7 d6 对应的内部时钟和数据总线我们现在暂且不要管它。以后本事大了在调教它们。在我们的例句中,向GPIO寄存器写入了2,常数2的八位二进制表示是“00000010”因此如果此时GP0, Gp1等都已经被定义成输出的话,那么GP1输出高电平(接LED灯亮),GP0 输出低电平(所接led灯熄) 。截止到现在,你已经学会如何控制管脚的电平高低了。尽管还有一些疑问,比如怎样定义管脚为输出脚(以后会说),我得说如果事先gp1,gp0这两个管脚处于输入状态,这两个例句无效,是控制不了电平的。无论如何,这一会儿,你就学会了两个指令,35条我看也没啥难的。'------------------------------------------------------------------------------再加深一下对寄存器的认识:要把一个常数存储到,或者说写到一个寄存器中,仅用一条指令是办不到的,必须通过一个特殊的寄存器W,把数据倒过去. 这就应该使用到两个语句。movlw 02H 指令的意思是把一个常数存入特殊寄存器W, 这个常数是2,后面的H是表示十六进制movwf GPIO 指令的意思是把特殊寄存器W的数值存入寄存器. 这个寄存器的名称是 GPIO这里涉及到两个概念,常数和寄存器.常数好说,比如说十进制数 35,26 但要注意,在单片机系统里我们一般不用十进制,而使用十六进制. 有关数制转换方面的知识,是计算机的基础,必须会熟练地在二进制、十六进制、十进制之间转换,我就不罗索了.寄存器也叫单片机的内存。一个寄存器可以存储的数值范围是0--255,用十六进制表示就是 0---FFH.用二进制表示就是00000000----11111111.以后要养成习惯用十六进制表示数.那么,一个单片机里有多少个这样的寄存器哩,pic12ce512里面有1024个这样的寄存器可以供你使用,为了使用方便生产商已经给它们编上了号码,第一号码是000H,往下依照次序为 001H,002H........3FFH.(怎么样,开始用十六进制说事了吧,如果你不熟悉熟制转换赶紧补课来得及)有了编号就像我们居住的房间有了房间号码,使用就方便的多了.房间号码在邮政行业叫地址,因此我们称这些号码叫做寄存器地址,或称地址数例如 名称为 GPIO 的寄存器,他的地址,或地址数是06H 。所以我们的两个例句完全等同于:my_name006: movlw02h '常数2进入w movwf06H 'W 的数进入 寄存器GPIO'-----------------------------------------有两个寄存器比较特殊,它们没有地址,一个名字叫做 W,另一个叫做 TRIS. 所以他们两个在存储数据的时候比较快,一个指令就可以解决问题,例如: movlw 03H 一条指令就把常数3写入到W寄存器了。关于TRIS寄存器,我们以后用到它再说.除了他们两个以外的其他所有寄存器,在写入数据时一般都要用两条指令进行。今天就扯到这里,虽然只有两个指令,但主要目的是要同学们接触一下指令,建立寄存器的概念以及他们同硬件部件的联系。增强学习的信心。能有这些体会,这一节就算过关了。 随着以后的深入,你会发现小小单片机里面是一个大世界,兴趣也由此而生。我们上一次讲的两个指令是是如何控制管脚电平的高低。前提是所有管脚已经被定义成输出了(OUT)如果被定义成了输入,则上次的指令虽然也能运行,但运行后丝毫不能改变管脚电平高低,因为此时管脚是输入状态,电平取决于外部输入,指令无法改变。在PIC单片机系列中,改变I/O口的输入输出依靠写入寄存器TRIS的值,相应位写0,表示对应管脚被定义成了输出,写1,就是输入。现在假如预把GP1、GP2管脚定义成输出,其他脚全是输入。那就应该向TRIS 寄存器写入二进制数 11111001,换算成十六进制就是 F9H.依照以前我们学到的知识,在PIC系列单片机里,本来应该用下列的语句来完成我们的设定:movlw 0F9H '常数进W以字母开头的常数前面必须加0movwf TRISA '把W内的数复制到TRIS实际上PIC系列的单片机也都是这么写的,后面加的A,表示第一个8位的口(有的单片机不仅一个口,还有好几

相关文章:

通俗易懂讲PIC单片机:从一窍不通到入门进步

单片机入门不难------谈PIC系列(转自矿石收音机论坛---崂山)十年前的老帖子,讲得通俗易懂,分享之。 请看图 这个8条腿的小螃蟹就是我们的第一顿饭,只要把它吃下去,以后的大餐就好办了。 第1、8条腿接电源 +5V 和 地线。头两条腿是螃蟹钳子,好吃的很。 现在剩下了 6…...

GTE语义搜索优化:提升企业文档检索准确率50%

GTE语义搜索优化:提升企业文档检索准确率50% 1. 这不是传统关键词搜索,而是真正“懂你意思”的检索 上周帮一家做工业设备的客户调试知识库系统时,他们技术主管指着屏幕叹了口气:“我们有三万份产品手册、维修指南和故障案例&am…...

C++零基础到工程实战(3.4.2):C++17 中 switch 初始化语句详解

目录 一、前言 二、switch 初始化语句是什么 三、GetPlay() 和 play.Status() 到底是什么意思 3.1 GetPlay() 是什么 3.2 play.Status() 是什么 四、完整示例解析: 4.1 示例: (1)代码 (2)变量名解…...

C++零基础到工程实战(3.4.1):switch高效条件判断分析

目录 一、本节学习内容概要图 二、前言 三、switch 的基本作用与适用场景 3.1 什么是 switch 语句 (1)一个变量只有若干个固定取值 (2)判断条件是整数或枚举 3.2 switch 和 if 的核心区别 (1)if 更…...

mysql如何将结果集存入新表_使用CREATE TABLE AS语句

CREATE TABLE AS 会自动推导字段类型但不可控,易导致VARCHAR过宽、NULL约束丢失、无索引主键等问题;复制结构数据应改用CREATE TABLE ... LIKE INSERT;需显式CAST、别名及COALESCE确保精度与空值处理。能直接用 CREATE TABLE AS,…...

openEuler 24.03 MariaDB Galera 集群部署指南(cz)

openEuler 24.03 MariaDB Galera 集群部署指南 文档说明 本文档适用于 openEuler 24.03 系统,包含 3 节点初始集群部署、新增节点 4(192.168.100.163)集群扩容完整流程。全程 root 操作,所有命令均添加详细注释和解释,…...

Lychee Rerank MM智能助手场景:支持图文提问的本地化多模态搜索引擎构建指南

Lychee Rerank MM智能助手场景:支持图文提问的本地化多模态搜索引擎构建指南 1. 项目概述与核心价值 Lychee Rerank MM是一个基于Qwen2.5-VL构建的高性能多模态重排序系统,由哈工大(深圳)自然语言处理团队开发。这个系统专门解决…...

3步搞定通义千问3-4B部署:Ollama镜像一键拉起实操手册

3步搞定通义千问3-4B部署:Ollama镜像一键拉起实操手册 想在自己的电脑上跑一个功能强大的AI助手,但又担心配置复杂、资源消耗大?今天,我们就来解决这个问题。通义千问最新推出的3-4B-Instruct-2507模型,号称“4B体量&…...

Kook Zimage真实幻想Turbo保姆级教程:5分钟部署你的专属AI画师

Kook Zimage真实幻想Turbo保姆级教程:5分钟部署你的专属AI画师 1. 项目简介与核心优势 今天我们要介绍的是一个能让普通人快速上手的AI绘画工具——Kook Zimage真实幻想Turbo。简单来说,这是一个专门为个人电脑设计的AI画师,特别擅长生成那…...

新手必看:用PWM和PID控制打造高效Buck电路(附Simulink仿真文件)

从零构建Buck电路:PWM与PID控制的实战指南 在电力电子领域,Buck电路作为最基础的DC-DC降压拓扑,其重要性不言而喻。但很多初学者在尝试实现闭环控制时,往往会被PWM调制和PID调节的复杂交互所困扰。本文将带你从零开始,…...

云容笔谈·东方红颜影像生成系统Python入门实战:快速搭建AI绘画环境

云容笔谈东方红颜影像生成系统Python入门实战:快速搭建AI绘画环境 你是不是也对AI绘画充满好奇,想亲手试试用代码生成一张独一无二的画作?今天,我们就来聊聊如何在星图GPU平台上,快速部署“云容笔谈东方红颜影像生成系…...

终极指南:使用over-golang构建分布式系统的etcd服务发现与gRPC集成方案

终极指南:使用over-golang构建分布式系统的etcd服务发现与gRPC集成方案 【免费下载链接】over-golang Golang相关:[审稿进度80%]Go语法、Go并发思想、Go与web开发、Go微服务设施等 项目地址: https://gitcode.com/gh_mirrors/ov/over-golang over…...

2026奇点大会语音合成赛道黑马突围战:3家初创公司如何用<1/10算力达成SOTA效果?技术栈拆解与模型蒸馏全流程图谱

第一章:2026奇点智能技术大会:大模型语音合成 2026奇点智能技术大会(https://ml-summit.org) 语音合成技术的范式跃迁 在2026奇点智能技术大会上,大模型驱动的语音合成(TTS)已突破传统拼接与参数化框架的边界&#x…...

深度学习环境配置踩坑无数?试试这个镜像,基础环境全搞定,只需关注代码

深度学习环境配置踩坑无数?试试这个镜像,基础环境全搞定,只需关注代码 1. 为什么选择这个深度学习训练镜像 深度学习环境配置一直是让开发者头疼的问题。从CUDA版本冲突到Python包依赖问题,再到各种框架的兼容性问题&#xff0c…...

从零开始了解GXUI字体系统:完整解析字体嵌入与字形渲染流程

从零开始了解GXUI字体系统:完整解析字体嵌入与字形渲染流程 【免费下载链接】gxui An experimental Go cross platform UI library. 项目地址: https://gitcode.com/gh_mirrors/gx/gxui GXUI是一个实验性的Go跨平台UI库,其字体系统是实现高质量文…...

Vue Router Composition API 完全指南:现代化路由开发的必备技能

Vue Router Composition API 完全指南:现代化路由开发的必备技能 【免费下载链接】router 🚦 The official router for Vue.js 项目地址: https://gitcode.com/gh_mirrors/router6/router Vue Router 作为 Vue.js 官方路由管理器,随着…...

10个实用技巧:r2 HTTP客户端打造企业级请求的完整指南

10个实用技巧:r2 HTTP客户端打造企业级请求的完整指南 【免费下载链接】r2 HTTP client. Spiritual successor to request. 项目地址: https://gitcode.com/gh_mirrors/r2/r2 r2作为request的精神继任者,是一款基于Fetch API构建的现代HTTP客户端…...

OFA-large视觉蕴含效果展示:SNLI-VE测试集惊艳匹配案例集

OFA-large视觉蕴含效果展示:SNLI-VE测试集惊艳匹配案例集 1. 引言:当图像遇见文字,AI如何理解它们的关系? 想象一下这样的场景:你看到一张图片,里面有两只鸟站在树枝上。如果有人问你:"图…...

终极指南:DuckDuckGo Android远程消息框架的7个核心机制实现无推送通知体验

终极指南:DuckDuckGo Android远程消息框架的7个核心机制实现无推送通知体验 【免费下载链接】Android DuckDuckGo Android App 项目地址: https://gitcode.com/gh_mirrors/android1/Android DuckDuckGo Android应用以其强大的隐私保护功能著称,其…...

【C++11】Cyber解构参数流的 无限增生 ——【可变参数模板 与 emplace系列接口】编译器如何面对乱码般的数据流进行“逻辑拆解”?可变参数模板为你量身定制逻辑!!

⚡ CYBER_PROFILE ⚡/// SYSTEM READY /// [ WARNING ]: DETECTING HIGH ENERGY &#x1f30a; &#x1f309; &#x1f30a; 心手合一 水到渠成 >>> ACCESS TERMINAL <<< [ &#x1f9be; 作者主页 ] [ &#x1f525; C初阶 ] [ &#x1f4be;C进…...

Janus-Pro-7B计算机视觉辅助:基于YOLOv8检测结果的智能报告生成

Janus-Pro-7B计算机视觉辅助&#xff1a;基于YOLOv8检测结果的智能报告生成 最近在做一个工业园区的智能巡检项目&#xff0c;客户提了个挺有意思的需求&#xff1a;他们希望摄像头不仅能“看见”设备异常&#xff0c;还能自动“说”出来。简单来说&#xff0c;就是系统识别到…...

tus-js-client错误处理与调试:构建稳定的文件上传系统

tus-js-client错误处理与调试&#xff1a;构建稳定的文件上传系统 【免费下载链接】tus-js-client A pure JavaScript client for the tus resumable upload protocol 项目地址: https://gitcode.com/gh_mirrors/tu/tus-js-client tus-js-client是一个纯JavaScript客户端…...

AI时代新型的项目管理应该是什么样的?众

AI训练存储选型的演进路线 第一阶段&#xff1a;单机直连时代 早期的深度学习数据集较小&#xff0c;模型训练通常在单台服务器或单张GPU卡上完成。此时直接将数据存储在训练机器的本地NVMe SSD/HDD上。 其优势在于IO延迟最低&#xff0c;吞吐量极高&#xff0c;也就是“数据离…...

GitHub 悄悄起飞的开源项目,想让 AI 接管你的电脑断

我为什么会发出这个疑问呢&#xff1f;是因为我研究Web开发中的一个问题时&#xff0c;HTTP请求体在 Filter&#xff08;过滤器&#xff09;处被读取了之后&#xff0c;在 Controller&#xff08;控制层&#xff09;就读不到值了&#xff0c;使用 RequestBody 的时候。 无论是字…...

BMV31M304A语音模块:I²C接口嵌入式语音播放方案

1. BMV31M304A语音播放模块深度技术解析BMV31M304A是由BEST MODULES CORP推出的专用IC接口语音播放模块&#xff0c;面向嵌入式系统设计&#xff0c;尤其适用于需要低成本、低功耗、即插即用语音提示功能的工业HMI、智能家电、安防设备及教育类开发板。该模块并非通用音频解码芯…...

终极KCC多设备兼容指南:Kindle、Kobo、ReMarkable全支持的漫画转换神器

终极KCC多设备兼容指南&#xff1a;Kindle、Kobo、ReMarkable全支持的漫画转换神器 【免费下载链接】kcc KCC (a.k.a. Kindle Comic Converter) is a comic and manga converter for ebook readers. 项目地址: https://gitcode.com/gh_mirrors/kc/kcc KCC&#xff08;Ki…...

简明教程:实现OpenCLaw轻量级应用服务器部署及Ollama大模型本地化蓉

智能体时代的代码范式转移与 C# 的战略转型 传统的 C# 开发模式&#xff0c;即所谓的“工程导向型”开发&#xff0c;要求开发者创建一个复杂的项目结构&#xff0c;包括项目文件&#xff08;.csproj&#xff09;、解决方案文件&#xff08;.sln&#xff09;、属性设置以及依赖…...

Graphormer开源镜像保姆级教程:3.7GB纯Transformer模型GPU快速部署

Graphormer开源镜像保姆级教程&#xff1a;3.7GB纯Transformer模型GPU快速部署 1. 为什么选择Graphormer&#xff1f; Graphormer是微软研究院开发的基于纯Transformer架构的图神经网络模型&#xff0c;专门用于分子属性预测任务。与传统的图神经网络(GNN)相比&#xff0c;它…...

Chainlit+Qwen1.5-1.8B-GPTQ-Int4构建私有AI助手:支持文件上传与内容问答教程

ChainlitQwen1.5-1.8B-GPTQ-Int4构建私有AI助手&#xff1a;支持文件上传与内容问答教程 1. 学习目标与前置准备 今天我们来学习如何搭建一个功能强大的私有AI助手&#xff0c;这个助手不仅能进行智能对话&#xff0c;还能读取你上传的文件并回答相关问题。想象一下&#xff…...

终极PEFT技术教程:用少量数据高效微调大模型的完整指南

终极PEFT技术教程&#xff1a;用少量数据高效微调大模型的完整指南 【免费下载链接】notebooks Notebooks using the Hugging Face libraries &#x1f917; 项目地址: https://gitcode.com/gh_mirrors/note/notebooks GitHub 加速计划 / note / notebooks项目提供了丰富…...