如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第1章PIC16F877的外围功能模块1.1.2简单应用实例该例用于令与PORTD口相连的8个发光二极管前4个点亮,后4个熄灭。在调试程序前,应使与PORTD口相连的8位拔码开关拔向相应的位置。例1.1PORTD输出#include<pic.h>main(){TRISD=0X00;/*TRISD寄存器被赋值,PORTD每一位都为输出*/while(1);/*循环执行点亮发光二极管的语句*/{PORTD=0XF0;/*向PORTD送数据,点亮LED(由实验模板*//*的设计决定相应位置低时LED点亮)。*/}}1.2.1MSSP模块SPI方式功能简介下面是一段简单的SPI初始化例程,用于利用SPI工作方式输出数据的场合。例1.2SPI初始化程序/*spi初始化子程序*/voidSPIINIT(){PIR1=0;/*清除SPI中断标志*/SSPCON=0x30;/*SSPEN=1;CKP=0,FOSC/4*/SSPSTAT=0xC0;TRISC=0x00;/*SDO引脚为输出,SCK引脚为输出*/}1.2.3程序清单下面给出已经在实验板上调试通过的一个程序,可作为用户编制其它程序的参考。#include<pic1687x.h>/*该程序用于在8个LED上依次显示1~8等8个字符*/staticvolatileinttable[20]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x7f,0xbf,0x89,0xff};volatileunsignedchardata;#definePORTAIT(adr,bit)((unsigned)(&adr)*8+(bit))/*绝对寻址位操作指令*/88staticbitPORTA_5@PORTAIT(PORTA,5);/*spi初始化子程序*/voidSPIINIT(){PIR1=0;SSPCON=0x30;/*SSPEN=1;CKP=0,FOSC/4*/SSPSTAT=0xC0;TRISC=0x00;/*SDO引脚为输出,SCK引脚为输出*/}/*系统各输入输出口初始化子程序*/voidinitial(){TRISA=0x00;/*A口设置为输出*/INTCON=0x00;/*关闭所有中断*/PORTA_5=0;/*LACK送低电平,为锁存做准备*/}/*SPI发送子程序*/voidSPILED(intdata){SSPBUF=data;/*启动发送*/do{;}while(SSPIF==0);/*等待发送完毕*/SSPIF=0;/*清除SSPIF标志*/}/*主程序*/main(){unsignedI;initial();/*系统初始化*/SPIINIT();/*SPI初始化*/for(i=8;i>0;i--)/*连续发送8个数据*/{data=table[i];/*通过数组的转换获得待显示的段码*/SPILED(data);/*发送显示段码显示*/}PORTA_5=1;/*最后给锁存信号,代表显示任务完成*/89}1.3.3程序清单下面给出已经在实验板上调试通过的程序,可作为用户编制其它程序的参考。有关显示部分的SPI初始化,请读者参考1.2节。#include<pic.h>/*该程序用于按下相应的键时,在第一个8段LED上显示相应的1~4的字符*/#definePORTAIT(adr,bit)((unsigned)(&adr)*8+(bit))/*绝对寻址位操作指令*/staticbitPORTA_5@PORTAIT(PORTA,5);#definePORTBIT(adr,bit)((unsigned)(&adr)*8+(bit))/*绝对寻址位操作指令*/staticbitPORTB_5@PORTBIT(PORTB,5);staticbitPORTB_4@PORTBIT(PORTB,4);staticbitPORTB_1@PORTBIT(PORTB,1);staticbitPORTB_2@PORTBIT(PORTB,2);unsignedintI;unsignedcharj;intdata;/*spi初始化子程序*/voidSPIINIT(){PIR1=0;SSPCON=0x30;SSPSTAT=0xC0;TRISC=0xD7;/*SDO引脚为输出,SCK引脚为输出*/}/*系统各输入输出口初始化子程序*/voidinitial(){TRISA=0xD