PIC16F72 -74HC595控制程序
/*************PIC16F72單片機(jī)程序******************************/
/*********************************************************************/
/*****File Function : 74HC595控制程序 *****/
/*****Program Author : ZhengWen(ClimberWin)*****/
/*****MCU : PIC16F72 外部晶振12MHZ *****/
/*****Compile Date : 2011/04/13 *****/
/*****Edition Info : V1.0*****/
/*************************************************************/
#include
#include "binary.h"
#define uchar unsigned char
#define uint unsigned int
void Init(void); //初始化子程序
void LockOut(void);
void Write(void);//寫(xiě)8位數(shù)據(jù)
void LockOut(void);
#define HC595_SCLK RB2 //移位時(shí)鐘脈沖
#define HC595_RCK RB3 //輸出鎖存器控制脈沖
#define HC595_SI RB4 //串行數(shù)據(jù)輸入
#define HC595_EN RB5
uchar temp;
/*********************************************/
void delayms(unsigned int count)
{
uint i,j;
for(i=0;i
}
/*********************************************/
/////////////////74HC595部分程序////////////////////////
/********存數(shù)據(jù)到移位寄存器*******/
void Write(void)//寫(xiě)8位數(shù)據(jù)
{
uchar j;
for (j=0;j<8;j++)
{
if (temp & 0x80) //讀取
{
HC595_SI=1;
}
else
{
HC595_SI=0;
}
temp=temp<<1;
HC595_SCLK=1;
asm("NOP");
asm("NOP");
HC595_SCLK=0;
LockOut(); //數(shù)據(jù)移位完畢后鎖存輸出
}
}
/********************************************************/
/*寄存器內(nèi)的數(shù)據(jù)鎖存到輸出寄存器并輸出顯示*/
void LockOut(void)
{
HC595_RCK=0;
asm("NOP");
asm("NOP");
HC595_RCK=1;
asm("NOP");
asm("NOP");
HC595_RCK=0;
}
/*********************************************************/
void Init(void)
{
PORTB = 0B00000000;
TRISB = 0B00000000;//設(shè)置RB0為輸入,作為按鍵口
RBPU=0;//PORTB上拉使能
}
////////////主程序/////////////////////////
void main (void)
{
uchar i;
Init();//初始化程序
PORTB=0XFF;
HC595_SCLK=0;
HC595_RCK=1;
HC595_EN=0;
temp=0x55;
Write();
temp=0xaa;
Write();
temp=0x01;
Write();
temp=0x22;
Write();
while(1);
}
評(píng)論