- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PIC单片机原理及应用;主要内容;输出数据时;读入数据时;5;;7;8;;例1:实现发光二极管D1闪烁功能。
硬件分析:发光二极管D1连接在第38引脚RE0端口上;
RE0输出高电平时(=1),D1亮;
RE0输出低电平时(=0),D1不亮;
;;软件设计为:
int main()
{
TRISEbits.TRISE0 = 0; //RE0设置为输出(1输入,0输出);
while(1)
{
LATEbits.LATE0 =1; //RE0=1输出高电平+5V,亮灯
delay(); //延时
LATEbits.LATE0 =0; //RE0=0输出低电平0V,灭灯
delay(); //延时
}
}
;例2、设计让发光二极管D0-D5实现流水灯功能。
硬件分析:发光二极管D0-D5连接在第33-38引脚,即RE0-RE5
端口;每个引脚输出高电平时(=1)灯亮;输出低电平时(=0)灯不亮。;;;软件设计
方法一:循环输出
int ledcode[6]={0x01,0x02, 0x04, 0x08, 0x10, 0x20};
//存放6个输出数据
int main(void)
{
TRISE =0x00; //RE0-RE5配置为输出
while(1)
{
for (i=0;i6;i++)
{
LATE=ledcode[i]; //按状态循环点灯
delay(); //延时
}
}
};软件设计
方法二:移位输出
int led=0x01; //存放输出的第一个数据
int main(void)
{
unsigned long int i=0;
TRISE =0x00; //RE0-RE5配置为输出
while(1)
{
LATE =led; //点灯
for (i=0;i65000;i++){}; //延时
led = led1; //左移,状态改变
if (led == 0x40) led = 0x01; //第6个灯亮后,重新从
//第1个灯点亮
}
};例2、按键加1计数。每按S8按键一次,加1计数,发光二极管D0-D5显示计数的二进制值。
硬件分析:D0-D5连接在第33-38引脚(RE0-RE5),按键S8连接17引脚(RE8)。S8不按时,RE8输入为高电平(=1);S8按下时,RE8输入为低电平(=0);;20;实验一、通用I/O端口实验;主要内容;1. 中断
中断是指,在程序运行过程中,当出现情况时,CPU暂时停止当前程序的执行,转而执行处理新情况的过程叫做中断。
简单来说:中断是一种发生了一个外部的事件时调用相应的处理程序的过程。
2.中断源
引起中断的原因,或能够发出中断请求信号的来源统称为中断源。
(1)外设请求中断
(2)实时时钟请求中断
(3)软件陷阱中断
(4)数据通道中断;3.中断响应
中断响应是硬件对中断请求作出响应的过程,包括识别中断源,保留现场,引出中断处理程序等的过程。
;25;;27;28;29;30;31;(2)中断服务程序ISR的编写
void __attribute__((__interrupt__(__save__(variable1,variable2)))) _INT0Interrupt(void)
{
//中断服务程序代码
}
__attribute__((__interrupt__ [(
[__save__ (symbol-list)]
[, __ irq__ (irqid)]
[, __ altirq__ (altirqid)]
[, __ preprologue__ (asm)]
)]
))
save 参数指定进入和退出ISR时需要保护和恢复的一个或多个变量;
irq 参数允许将一个中断向量对应于一个特定的中断,括号括起来的是中断ID号;
altirq 参数允许将一个中断向量对应于一个指定的备用中断;
preprologue 参数允许在生成的代码中,编译器生成的函数prologue前插入汇编语句。;例1.单中断应用。按键S8链接17管脚(RE8端口
文档评论(0)