- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PIC单片机C语言编程实例一【DOC精选】
第5章 PIC16F877的外围功能模块
5.1.2 简单应用实例
该例用于令与PORTD口相连的8个发光二极管前4个点亮,后4个熄灭。在调试程序前,应使与PORTD口相连的8位拔码开关拔向相应的位置。
例5.1 PORTD输出
#include pic.h
main()
{
TRISD=0X00;/*TRISD寄存器被赋值,PORTD*/
while(1); /*循环执行点亮发光二极管的语句*/
{
PORTD=0XF0;/*向PORTD送数据,LED(由实验模板*/
/*的设计决定相应位置低时LED点亮)。*/
}
}
5.2.1 MSSP模块SPI方式功能简介
下面是一段简单的SPI初始化例程,用于利用SPI工作方式输出数据的场合。
例5.2 SPI初始化程序
/*spi初始化子程序*/
void SPIINIT()
{
PIR1=0; /*清除SPI中断标志*/
SSPCON=0x30;/* SSPEN=1;CKP=0 , FOSC/4 */
SSPSTAT=0xC0;
TRISC=0x00;/*SDO引脚为输出,SCK*/
}
5.2.3 程序清单
下面给出已经在实验板上调试通过的一个程序,可作为用户编制其它程序的参考。
#include pic1687x.h
/*该程序用于在8个LED上依次显示1~8等8个字符*/
static volatile int table[20]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x7f,0xbf,0x89,0xff};
volatile unsigned char data;
#define PORTAIT(adr,bit) ((unsigned)(adr)*8+(bit)) /**/
static bit PORTA_5 @ PORTAIT(PORTA,5);
/*spi*/
void SPIINIT()
{
PIR1=0;
SSPCON=0x30;/* SSPEN=1;CKP=0 , FOSC/4 */
SSPSTAT=0xC0;
TRISC=0x00;/*SDO引脚为输出,SCK*/
}
/*系统各输入输出口初始化子程序*/
void initial()
{
TRISA=0x00; INTCON=0x00;/*关闭所有中断*/
PORTA_5=0;/*LACK送低电平,*/
}
/*SPI发送子程序*/
void SPILED(int data)
{
SSPBUF=data;/*启动发送*/
do
{
;
}while(SSPIF==0);SSPIF=0;}
/*主程序*/
main()
{
unsigned I;
initial();/*系统初始化*/
SPIINIT() ;/*SPI初始化*/
for(i=8;i0;i--)/*连续发送8个数据*/
{
data=table[i];
SPILED(data); }
PORTA_5=1;/*最后给锁存信号,*/
}
5.3.3 程序清单
下面给出已经在实验板上调试通过的程序,可作为用户编制其它程序的参考。有关显示部分的SPI初始化,请读者参考5.2节。
#include pic.h
/*该程序用于按下相应的键时,在第一个8段LED上显示相应的1~4的字符*/
#define PORTAIT(adr,bit) ((unsigned)(adr)*8+(bit)) /**/
static bit PORTA_5 @ PORTAIT(PORTA,5);
#define PORTBIT(adr, bit) ((unsigned)(adr)*8+(bit)) /*绝对寻址位操作指令*/
static bit PORTB_5 @ PORTBIT(PORTB,5);
static bit PORTB_4 @ PORTBIT(PORTB,4);
static bit PORTB_1 @ PORTBIT(PORTB,1);
static bit PORTB_2 @ PORTBIT(PORTB,2);
unsigned int I;
unsigned char j;
intdata;
/*spi*/
void SPIINIT()
{
PIR1=0;
SSPCON=0x30;
SSPSTAT=0xC0;
TRISC=0xD7;/*SDO引脚为输出,SCK*/
}
/*系统各输入输出口初始化子程序*/
void initi
您可能关注的文档
- PDF电子印章解决方案【DOC精选】.doc
- Photocap大头照DIY的教学【DOC精选】.doc
- Photoshopr打造一个奇妙的太空 【DOC精选】.doc
- Photoshop CS“调整边缘”抠图抠图new【DOC精选】.doc
- photoshop ps个人总结的抠图方法,与大家分享一下【DOC精选】.doc
- Photoshop_CS调整边缘 工具抠图【DOC精选】.doc
- photoshop中文教程【DOC精选】.doc
- Photoshop制作精致的Ipad正面图【DOC精选】.docx
- Photoshop制作对称双向彩虹流光字【DOC精选】.doc
- Photoshop图层遮罩应用详解【DOC精选】.doc
文档评论(0)