msp430 c语言 除法,msp430的一些常用的C语言控制程序

编程入门 行业动态 更新时间:2024-10-05 11:19:27

msp430 c<a href=https://www.elefans.com/category/jswz/34/1770116.html style=语言 除法,msp430的一些常用的C语言控制程序"/>

msp430 c语言 除法,msp430的一些常用的C语言控制程序

原标题:msp430的一些常用的C语言控制程序---ZLG7289

/**********************************************************/

//高级实验开发组件 - 组件示例程序

//时钟设置:

ACLK=N/A,MCLK=SMCLK=default(DCO~800k)

//硬件连接:

MSPBroad ZLG7289 Broad

------------------ ------------------

| VCC | ------> | VCC |

| P65 | ------> | CS |

| P64 | ------> | CLK |

| P63 | | DAT |

| P24 |

| GND | ------> | GND |

------------------ ------------------

//当前演示程序功能描述:

当有按键按下时,430进入中断读取键值,显示在数码管上

/*********************************************************/

#include

#define Z7289_CS BIT5

#define Z7289_CLK BIT4

#define Z7289_DAT BIT3

#define Z7289_KEY BIT4

#define Z7289_DIR P6DIR

#define Z7289_OUT P6OUT

#define Z7289_IN P6IN

#define Z7279_INT_DIR P2DIR

#define Z7279_INT_IE P2IE

#define Z7279_INT_IES P2IES

#define Z7279_INT_IFG P2IFG //定义MSP430端口

#define Z7289_CS_LO Z7289_OUT &= ~Z7289_CS

#define Z7289_CS_HI Z7289_OUT |= Z7289_CS

#define Z7289_CLK_LO Z7289_OUT &= ~Z7289_CLK

#define Z7289_CLK_HI Z7289_OUT |= Z7289_CLK

#define Z7289_DAT_LO Z7289_OUT &= ~Z7289_DAT

#define Z7289_DAT_HI Z7289_OUT |= Z7289_DAT

#define Z7289_RESET Z7289_Send1(0xA4)

#define Z7289_TEST Z7289_Send1(0xBF)

#define Z7289_LMOV Z7289_Send1(0xA1)

#define Z7289_RMOV Z7289_Send1(0xA0)

#define Z7289_RLMOV Z7289_Send1(0xA3)

#define Z7289_RRMOV Z7289_Send1(0xA2) //定义ZLG7289功能

const unsigned char DelayConst = 0; //系统延时

const unsigned char Code[3]={ //显示方式

0x80,0xC8,0x90

};

const unsigned char Keys[16]={ //按键编码

0x01,0x18,0x19,0x1A,0x10,0x11,0x12,0x08,0x09,0x0A,0x1B,0x13,0x0B,0x03,0x00,0x02

};

void Z7289_Delayt(unsigned int dtime);

void Z7289_Send1(unsigned char dat);

void Z7289_Send2(unsigned char add,unsigned char dat);

void Z7289_Show(unsigned char add,unsigned char coding,unsigned char d);

void Z7289_Init(void);

void Z7279_Init(void);

void OSC_Init(void);

unsigned char Z7289_ReadKey(void);

unsigned char readkey;

int j=8;

unsigned char key_array[8];

void main(void) {

WDTCTL = WDTPW + WDTHOLD; //停止系统软件看门狗

OSC_Init();

Z7289_Init();

Z7279_Init();

_BIS_SR(GIE);

}

//中断服务程序

读取键值并显示

#pragma vector=PORT2_VECTOR

__void PORT2_ISR (void) {

readkey = Z7289_ReadKey();

key_array[j] = readkey;

Z7289_Show(j,1,readkey);

Z7279_INT_IFG = 0;

j--;

if(j<0)

j=8;

}

//

void OSC_Init(void){

BCSCTL1 &= ~XT2OFF; //XT2 = HF-XTAL

do {

IFG1 &= ~OFIFG; //清除OSCFault标志位

for (int i=0xFF;i>0;i--); //延时等待晶振

} while ((IFG1 & OFIFG)); //OSCFault标志位始终有效

BCSCTL2 |= SELM_2; //MCLK = XT2

}

//初始化程序

设定端口和中断,初始化ZLG7289

void Z7289_Init(void) {

Z7289_DIR |= (Z7289_CS + Z7289_CLK + Z7289_DAT);

Z7289_CS_HI;

Z7289_CLK_LO;

Z7289_RESET;

}

//初始化7279

void Z7279_Init(void){

Z7279_INT_DIR &= ~Z7289_KEY;

Z7279_INT_IE |= Z7289_KEY;

Z7279_INT_IES |= Z7289_KEY;

}

//向ZLG7289发送一个字节(命令)

void Z7289_Send1(unsigned char dat) {

unsigned char itemp;

Z7289_CS_LO;

Z7289_Delayt(1);

for(itemp=0;itemp<8;itemp++) {

if((dat<

Z7289_DAT_HI;

else

Z7289_DAT_LO;

Z7289_Delayt(1);

Z7289_CLK_HI;

Z7289_Delayt(1);

Z7289_CLK_LO;

}

Z7289_CS_HI;

}

//向ZLG7289发送两个字节(命令+数据)

void Z7289_Send2(unsigned char add,unsigned char dat) {

unsigned char itemp;

Z7289_CS_LO;

Z7289_Delayt(1);

for(itemp=0;itemp<8;itemp++) {

if((add<

Z7289_DAT_HI;

else

Z7289_DAT_LO;

Z7289_Delayt(1);

Z7289_CLK_HI;

Z7289_Delayt(1);

Z7289_CLK_LO;

}

Z7289_Delayt(1);

for(itemp=0;itemp<8;itemp++) {

if((dat<

Z7289_DAT_HI;

else

Z7289_DAT_LO;

Z7289_Delayt(1);

Z7289_CLK_HI;

Z7289_Delayt(1);

Z7289_CLK_LO;

}

Z7289_CS_HI;

}

//按照编码方式显示字符

void Z7289_Show(unsigned char add,unsigned char coding,unsigned char d) {

Z7289_Send2(Code[coding]+add,d);

}

//向ZLG7289发送命令后,读取按键键值,并查表返回结果

unsigned char Z7289_ReadKey(void) {

unsigned char itemp;

unsigned char dat;

dat = 0x15;

Z7289_CS_LO;

Z7289_Delayt(1);

for(itemp=0;itemp<8;itemp++) {//向7289发送命令

if((dat<

Z7289_DAT_HI;

else

Z7289_DAT_LO;

Z7289_Delayt(1);

Z7289_CLK_HI;

Z7289_Delayt(1);

Z7289_CLK_LO;

}

Z7289_DIR &= ~Z7289_DAT;

Z7289_Delayt(1);

for(itemp=0;itemp<8;itemp++) {//根据输入口的电平高低来确定dat的值

Z7289_CLK_HI;

Z7289_Delayt(1);

Z7289_CLK_LO;

dat<<=1;

if((Z7289_IN&Z7289_DAT) == Z7289_DAT)

dat |= BIT0;

else

dat &= ~BIT0;

}

Z7289_DIR |= Z7289_DAT;

Z7289_CS_HI;

for(itemp=0;itemp<16;itemp++)

if(dat==Keys[itemp])//查表返回键值,表可以从IAR中观察得到

break;

return itemp;

}

void Z7289_Delayt(unsigned int dtime) {

unsigned int itemp,jtemp;

for(itemp=0;itemp

for(jtemp=0;jtemp

}

责任编辑:

更多推荐

msp430 c语言 除法,msp430的一些常用的C语言控制程序

本文发布于:2024-02-28 07:31:01,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1768707.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:语言   除法   控制程序   常用

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!