#include "p18f458.h"
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;
/*初始化子程序*/
//该程序用于在8个LED上依次显示1~8
// http://www.51hei.com 单片机网员工编写此程序
//此程序为pic单片机设计
void initial()
{
TRISA=0x00; /*A口设置为输出*/
TRISC=0x00; /*SDO引脚为输出,SCK引脚为输出*/
INTCON=0x00; /*关闭所有中断*/
SSPCON1=0x30; /*SSPEN=1;CKP=1,FOSC/4*/
SSPSTAT=0xC0; /*时钟下降沿发送数据*/
PIR1=0; /*清除SSPIF标志*/
}
/*显示子程序*/
void SPILED(char data)
{
PORTAbits.RA5=0; /*LACK送低电平,为锁存做准备*/
SSPBUF=data; /*启动发送*/
do
{
;
}while(PIR1bits.SSPIF==0); /*等待发送完毕*/
PIR1bits.SSPIF=0; /*清除SSPIF标志*/
PORTAbits.RA5=1; /*最后给锁存信号,代表显示任务完成*/
}
/*主程序*/
main()
{
unsigned i;
initial(); /*系统初始化*/
for(i=8;i>0;i--) /*连续发送8个数据*/
{
data=table[i]; /*通过数组的转换获得待显示的段码*/
SPILED(data); /*发送显示段码显示*/
}
for(;;)
{
}
}