|
/*C51中的bit強(qiáng)制類型轉(zhuǎn)換示例*/
/*用于74HC595等串轉(zhuǎn)并的數(shù)據(jù)分離很方便*/
/*bit類型轉(zhuǎn)換時(shí)保留的是最高位(加0xff后溢出)*/
/*其它強(qiáng)制類型轉(zhuǎn)換保留低位,扔掉高位*/
#include<STC90C5xAD.H>
#include <intrins.h>
sbit smgSER = P1^0; // 595(14 腳)SER 數(shù)據(jù)輸入引腳
sbit RCK = P1^1; // 595(12 腳)STCP 鎖存時(shí)鐘 1 個(gè)上升沿所存一次數(shù)據(jù)
sbit SCK = P1^2; // 595(11 腳)SHCP 移位時(shí)鐘 8 個(gè)時(shí)鐘移入一個(gè)字節(jié)
//void HC595_WrOneByte(unsigned char ucDat);
void HC595_WrOneByte(unsigned char ucDat)
{
unsigned char i = 0;
/* 通過 8 循環(huán)將 8 位數(shù)據(jù)依次移入 74HC595 */
for (i=0; i<8; i++)
{
P0 =ucDat & 0x80; //debug調(diào)試用
smgSER = (bit)(ucDat & 0x80); //強(qiáng)制bit轉(zhuǎn)換
/*等價(jià)于if(ucDat&0x80) smgSER=1;
else smgSER=0;*/
SCK = 0;
ucDat <<= 1;
SCK = 1;
}
/* 數(shù)據(jù)并行輸出(借助上升沿) */
RCK = 0;
_nop_();
_nop_();
RCK = 1;
}
void main(void)
{
HC595_WrOneByte(0x81);
}
|
評(píng)分
-
查看全部評(píng)分
|