📄 hc165_msp430.c
字号:
/**********************************Copyright (c)*********************************
*
* 西安.兰特水电测控技术有限责任公司
*
* 开发部
*
*----------------------------------文件信息-------------------------------------
* 文件名称: hc165_msp430.c
* 创 建 人: 李良福
* 创建时间: 2006/04/05
* 修改时间: 2006/04/05
* 当前版本: v1.0: 针对于MSP430单片机的C语言(水情测量板:LT_V3RTU_2006_03_16)
* 描 述:本模块定义了操作并入串出移位寄存器74HC165的相关函数。
********************************************************************************/
#include <msp430x14x.h>
#include "v3rtu.h"
// PL: P6.4 异步并行装载输入
// CE: P6.5 时钟使能
// QH: P6.6 串行数据输出
// CP: P6.7 时钟输入
//端口数据输出电平高低控制
#define CP_high (P6OUT |= BIT7) //时钟高电平
#define CP_low (P6OUT &= ~BIT7) //时钟低电平
#define CE_high (P6OUT |= BIT5) //时钟无效
#define CE_low (P6OUT &= ~BIT5) //时钟使能
#define PL_high (P6OUT |= BIT4) //串行移位控制
#define PL_low (P6OUT &= ~BIT4) //并行读入寄存器
//端口方向控制
#define CP_out (P6DIR |= BIT7) //P6.7输出;
#define CE_out (P6DIR |= BIT5) //P6.5输出;
#define PL_out (P6DIR |= BIT4) //P6.4输出;
#define QH_in (P6DIR &= ~BIT6) //P6.6输入;
/*******************************************************************************
* name: Init_74HC165()
* description: Initlize the 74HC165 with port control.
* input parameter: NULL.
* output parameter: Null.
********************************************************************************/
static void Init_74HC165(void)
{
CP_out; //CP输出模式
CE_out; //CE输出模式
PL_out; //PL输出模式
QH_in; //QH输入模式
CE_high; //时钟使能
PL_high; //PL初始化为高
CP_low; //时钟低电平
}
/*******************************************************************************
* name: PL165()
* description: 并行数据读入寄存器
* input parameter: NULL.
* output parameter: Null.
********************************************************************************/
static void PL165(void)
{
// unsigned short dly;
PL_low; //并行读入寄存器
// for(dly=0;dly<2000;dly++);
delay_ms(500);
PL_high;//串行移位控制
}
/*******************************************************************************
* name: Shift_Byte()
* description: 读入一个字节.
* input parameter: NULL.
* output parameter: Null.
********************************************************************************/
unsigned char Shift_Byte(void)
{
unsigned char getvalue= 0, i;
Init_74HC165(); // 初始化165接口
CE_low;
PL165(); // 装载165并行数据
for (i = 0; i < 8; i++)
{
getvalue<<=1;
CP_low; //clock
if (P6IN & BIT6)
getvalue |=0x01; //最先接收的就是最高位,最后才是最低位
CP_high;
}
CE_high;
return getvalue;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -