⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hc165_msp430.c

📁 hc165_msp430.cIAR2。31调试
💻 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 + -