为什么往io控制android 查看io寄存器器写入特定值能点亮led灯

大学没做过什么项目,以后找工作怎么办? - 知乎452被浏览68922分享邀请回答13532 条评论分享收藏感谢收起技术小站:
厂商活动:
地点:苏州
时间:9月27日 14:00 - 17:00
地点:北京
时间:10月14日 13:00 - 17:30
地点:北京
时间:10月16日 14:00 - 17:00
地点:深圳
时间:11月8日 13:00 - 17:30
零基础快速成为Android项目开发工程师
ARM裸机开发实战(第1期加强版)
张飞硬件设计与开发视频教程
从0到1自己动手写嵌入式操作系统
张飞电子视频全套共十部
移入鼠标可放大二维码
pic单片机io口控制教程之c语言编程实现
来源:互联网 作者:辰光日 11:52
[导读] pic单片机编程之io口控制的c语言编程实例教程。io控制作为单片机最核心基础的东西,能做除了ad、da转换之外绝大多数的事情,那么,当提起对应单片机io口控制c语言程序编写,你是否已经了然于心呢?
1、什么是I/O?I/O能做什么?
  I/O控制对于单片机而言是最基础最核心的东西,其实单片机除了AD DA 转换之外的事情。其他大部分的事情I/O口都能做的到。I/O控制简单却能千变万化。
  I/O就是Input/Output的英文简写,意译为输入/输出。
  I/O对于单片机是最基本的东西,单片机除了AD、DA转换之外的事情,大部分I/O都可以做到。
  如果你是刚刚步入电子的新手,那你最好要知道一下I/O口具体能做什么。感性的认识对你的学习是很有帮助的。I/O口输出一个高(低)电平可以用来点亮一个LED灯,可以接通过一个继电器,来开启电机,来开启音响。开启许多的东西,也可以用于通信等等。输入一个高(低)电平 可以用来检测按键,检测红外线输入 ,检测信号等等。
2、TRISA寄存器与io口之间的对应关系:
  首先看下一个芯片的原理图。 注意 RA5~RA0这些口
  在看看RA口的方向控制寄存器TRISA
  在看看RA口的数据控制寄存器PORTA
  可以看出 芯片原理图中的第二脚 RA5 口 和 TRISA 寄存器中的TRISA5位对应 和PORTA寄存器中的 RA5位对应的,RA4~RA0都是如此对应的。
  也就是说TRISA 寄存器中的TRISA5位 和PORTA寄存器中的 RA5位来控制 第二脚的RA5口。
3、如何控制I/O口?
  其实控制单片机,就是控制寄存器上的各个位,设置成高设置成低。就好像给你一台机器有 8个的按钮。然后你根据说明书上介绍,根据你的需要按下 或者松开相应的按键 来得到你想得到的功能。只不过我们用的不是手而是C语言来按下和松开这些按键。
  TRISA寄存器是方向控制寄存器。就是控制I/O输入还是输出。比如 TRISA寄存器中的TRISA5位 设置成为0 RA5口是输出 设置成为1 RA5口为是输入。
4、C语言的具体实现:
  将RA5口设置成输入的几种方式
  第一种 TRISAbits.TRISA5=1; //简单明了,只影响一个位 设置单个I/O比较方便
  第二种 TRISA |= 0x20;//不够明了,只影响一个位
  第三种 TRISA =0x20;//不够明了,影响到其他位,设置多个I/O用比较方便
  将RA5口设置成输出的几种方式
  第一种 TRISAbits.TRISA5=0;
  第二种 TRISA &= ~0x20;
  第三种 TRISA =0x00;
  PORTA寄存器是数据控制寄存器。如果是输出状态:PORTA寄存器中的RA5位为0 则RA5口输出低电平,PORTA寄存器中的RA5位为1 则RA5口输出高电平。
  如果是输入状态:PORTA寄存器中的RA5位为0 则说明RA5口当前为低电平,PORTA寄存器中的RA5位为1 则说明RA5口当前为高电平。
  实例程序:
  如果在RA5口上连接着一个LED灯。我们将如何点亮他呢?
  开发环境为 MPLAB X IDE,芯片型号为PIC16LF1823
  #include //头文件
  __CONFIG(FOSC_INTOSC&WDTE_OFF&PWRTE_ON&MCLRE_OFF&CP_ON&CPD_OFF&BOREN_ON
  &CLKOUTEN_OFF&IESO_ON&FCMEN_ON);//这个要放到上一行去
  __CONFIG(PLLEN_OFF&LVP_OFF) ;//配置位
  int main(int argc, char** argv) {
  ANSELA=0;//将RA口全部设置成数字口,
  TRISAbits.TRISA5=0;//设置RA5为输出
  PORTAbits.RA5=1;//设置输出高电平点亮LED
  while(1);//程序在此无限循环
  头文件:程序中只要有了#include编译器就会去自动找到相应型号的头文件,头文件中定义好了每个寄存器的地址,位的地址等。
  配置位:这是十分重要即使程序没有任何错误 配置位没配置好程序一样不能用。具体如何配置可以看( 基于MPLAB X IDE配置位设置讲解 )。
  模拟数字口:在使用I/O口的时候要确保对应的I/O口是被设置成数字口的。
如今,物联网浪潮已然席卷至汽车电子产业,发动机控制系统、底盘控制系统和车身电子控制系统已模型初显,安全...
ADAS市场或破千亿
国产汽车雷达将爆发
抢占智能汽车制高点
为自动驾驶保驾护航
电动汽车面临的挑战
PIC单片机教程相关文章
PIC单片机教程相关下载
PIC单片机相关文章
PIC单片机相关下载
德国E+H(恩德斯豪斯)是一家员工数超过1万人的家族企业,去年营收21亿欧元,其中工业压力传感器贡献了2.3亿人民币,小量程、低功耗、可靠性和高精度...
精亮是苹果手机3D超声波指纹传感器的幕后功臣,这家公司致力于做工业传感器ODM开发,其总裁Steve Petrucelli博士说:“目前市面上卖300美元的传感器我们可...
创新实用技术专题
供应链服务
商务及广告合作
Jeffery Guo
关注我们的微信
供应链服务 PCB/IC/PCBA
版权所有 (C) 深圳华强聚丰电子科技有限公司
电信与信息服务业务经营许可证:粤B2-2014华科光电第三次单片机实验报告-LED灯控制器_中华文本库
第1页/共10页
LED 灯控制器
【实验目的】
加深对定时/计数器、中断、IO 端口的理解,掌握定时/计数器、中断的应用编程技术 及中断程序的调试方法。
【任务要求】
利用 C 单片机设计一个 LED 灯控制器,主要功能和技术指标要求如下: 1. LED 灯外接于 P0.0 端。 2. LED 灯分别按 2Hz,1Hz 和 0.2Hz 三种不同频率闪动,各持续 10s。 3. 在 LED 灯开始和停止闪烁时蜂鸣器分别鸣响 1 次。 4. 利用单片机内部定时器定时,要求采用中断方式。
【设计思路】
利用定时器 T0 分别实现 0.25s,0.5s 和 1s 的定时,分别得到三种闪烁方式的半周期, 利用定时器 T0 的中断服务程序实现 LED 信号灯的亮灭转换并重新开始计时。三种定时时间 的定时器计数初值存于工作寄存器中, 赋计数初值时取出, 每结束一个闪烁方式后通过改变 相应寄存器内的值以改变半周期, 然后再赋值时取出。 利用另一工作寄存器的值来控制闪烁 次数,以使每种闪烁频率下总的闪烁时间均为 10s。
【资源分配】
工作寄存器 RO、 R1 用于寄存此闪烁方式下的定时器计数初值。 工作寄存器 R2 用于确定 闪烁次数。
【流程图】
定时器设定 中断允许设定
赋定时器计数初 值,存于寄存器 R0、R1
闪烁次数R2赋值
取定时器计数初值
蜂鸣器鸣响 LED灯点亮
等待定时器T0中断 R2=00H?
N 蜂鸣器停止鸣响 LED灯亮灭改变
Y 停止计时
再次取此时闪烁状态 下定时器计数初值 改变定时器计数初 值,存于寄存器 R0、R1
R2重新赋值
【源代码】
;-----------------------------------;- Generated Initialization File -;------------------------------------
$include (C.inc)
public Init_Device
INIT SEGMENT CODE rseg INIT
LJMP MAIN ORG 000BH ;定时器 T0 中断入口
ORG 1000H MAIN: LCALL Init_D设备初始化
MOV SP, #40H MOV TMOD, #01H
;置堆栈指针 ;定时器 T0 为定时工作方式 1
SETB EA SETB ET0
;中断总允许 ;定时器 T0 中断源允许
BEGIN1: MOV R0, #0C1H MOV R1, #0B1H MOV R2, #28H
;设定 2Hz 闪烁方式定时器 T0 计数初值
;置 2Hz 闪烁方式闪烁次数
ACALL ASSIGN
;取定时器 T0 计数初值
SETB P3.1 SETB TR0 CLR P0.0
;蜂鸣器鸣响一次 ;启动定时器 T0 ;LED 灯点亮
HERE1: CJNE R2, #00H, HERE1 CLR TR0
;等待中断 ;2Hz 闪烁方式结束,关闭定时器,准备切换方式
BEGIN2: MOV R0, #83H MOV R1, #63H MOV R2, #14H
;设定 1Hz 闪烁方式定时器 T0 计数初值
;置 1Hz 闪烁方式闪烁次数
ACALL ASSIGN
;取定时器 T0 计数初值
SETB P3.1 SETB TR0 CLR P0.0
;蜂鸣器鸣响一次 ;启动定时器 T0 ;LED 灯点亮
HERE2: CJNE R2, #00H, HERE2 CLR TR0
;等待中断 ;1Hz 闪烁方式结束,关闭定时器,准备切换方式
BEGIN3: MOV R0, #06H MOV R1, #0C6H MOV R2, #0AH
第1页/共10页
寻找更多 ""}

我要回帖

更多关于 io寄存器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信