下面部分从TXT拷出,拷到网页,代码部分缺省了很多空格,比较凌乱,请谅解!
//目标系统: 基于C8051F单片机
//应用软件: Silicon IDE / Keil
/*01010101010101010101010101010101010101010101010101010101010101010101
----------------------------------------------------------------------
实验内容:
使用P2口作为信号源输入到74LS165,74LS165将会将该信号转为串行信号,
MCU再自己接收串行信号,使用P2口的LED指示灯查看数据是否正确。
----------------------------------------------------------------------
硬件连接:
将PB口的LED指示灯开关切换到"ON"状态。
DVK501(165PrlPort) F320 EX
D0 --------- P2.0
D1 --------- P2.1
D2 --------- P2.2
D3 --------- P2.3
D4 --------- P2.4
D5 --------- P2.5
D6 --------- P2.6
D7 --------- P2.7
VCC --------- VCC
GND --------- GND
PL --------- P1.0
QH --------- P0.5
CLK --------- P0.4
----------------------------------------------------------------------
注意事项:
(1)若有加载库程序,请将光盘根目录下的“library”下的“C8051F”文件夹拷到D盘
(2)请详细阅读:光盘根目录下的“说明书首页.htm”里的相应产品说明
----------------------------------------------------------------------
10101010101010101010101010101010101010101010101010101010101010101010*/
#define _DVK501_F320_EX_
#include <c8051f320.h>
#include <../../../../library/C8051F/ws_clock.h>
#include <../../../../library/C8051F/ws_74hc165_port.h>
void main(void)
{
uchar a = 0;
PCA0MD &= ~0x40;
XBR1 = 0x40;
clock_external();
P2MDOUT = 0xFF;
hc165Init();
while(1)
{
P2 = 0x55;
a = hc165GetDat();
P2 = a;
}
}
sbit HC165_RXD = P0^5;
sbit HC165_TXD = P0^4;
sbit HC165_PL = P1^0;
uchar hc165GetDat(void)
{
uchar i,dat=0;
HC165_PL = 0;
HC165_PL = 1;
for(i=0;i<8;i++)
{
HC165_TXD = 0;
dat = dat<<1;
if(HC165_RXD)
dat |= 0x01;
HC165_TXD = 1;
}
return dat;
}
void hc165Init(void)
{
P0MDOUT |= 0x08;
P1MDOUT |= 0x01;
}