关于430f5529的IO

2019-07-17 15:26发布

使用p1.1按键输入,控制一个数字量a步进增加1,按键p2.1按键输入,a步进减1
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
IOUJANE
1楼-- · 2019-07-17 15:30
我在做一个程控放大器,使用单片机spi通信给dac7811发送一个数字量,现在可以发送一个固定的数字量,还需要按键步进增加或减少这个数字量从而改变增益
IOUJANE
2楼-- · 2019-07-17 21:07
使用的软件是ccs7.0,单片机是msp430f5529
IOUJANE
3楼-- · 2019-07-17 21:21
#include <msp430.h>
#include <msp430f5529.h>
/*
* main.c
*/
#define uint unsigned int
int codeArray[]={0x199,0xCC,0x88,0x66,0x51,0x51,0x44,0x3A,0x33,0x2D,0x28};
int i=0;
void spiwrite(int data12,int cmd)
{
    int n,j;
    int jj=cmd;
    P3OUT |= 0x01; //SYNC高
    for( n=0;n<200;n++);
    P3OUT |= 0x02; //SCLK高
    P3OUT &= ~0x01; //SYNC低 片选使能
    for( n=0;n<200;n++);
    for(j=0;j<4;j++)
    {
        for(n=0;n<100;n++);
        P3OUT |= 0x02; //SCLK高
        for(n=0;n<100;n++);
        if((jj>>(3-j)) & 0x01)
            P3OUT |= 0x04;//数据高电平
        else
            P3OUT &=~0x04;//数据低电平
        for(n=0;n<100;n++);
        P3OUT &= ~0x02; //SCLK低
    }
    for(j=0;j<12;j++)
    {
        for(n=0;n<100;n++);
        P3OUT |= 0x02; //SCLK高
        for(n=0;n<100;n++);
        if((data12>>(11-j)) & 0x01)
            P3OUT |= 0x04;//数据高电平
        else
            P3OUT &=~0x04;//数据低电平
        for(n=0;n<100;n++);
        P3OUT &= ~0x02; //SCLK低
    }
    for(n=0;n<100;n++);
    P3OUT |= 0x02; //SCLK高
    for(n=0;n<100;n++);
    P3OUT |= 0x01; //SYNC高
    for(n=0;n<200;n++);
    }

    void delay(uint z)
    {
        uint x,y;
        for(x=z;x>0;x--)
            for(y=110;y>0;y--);
    }
    void main(void)

    {
    WDTCTL = WDTPW + WDTHOLD;
    P1DIR|=BIT0;   //设置p1.0为输出
    P1REN|=BIT1;
    P1OUT|=BIT1;


          P3OUT |= 0x07;//P3.0 - P3.2模拟SPI接口
          P3DIR |= 0x07;//P3.0->SYNC,P3.1->SCLK,P3.2->SDIN
          //int code=0x28;      //衰减20db,100倍0x28.
          //int code=0x800;
          int code=codeArray[i];
          int code1;
          spiwrite(code,1);
          while(1)
          {

              if(!(P1IN&0x02)){
                  delay(1);
                  if(!(P1IN&0x02)){
                      while(!(P1IN&0x02)){
                    P1OUT^=BIT0;
                   if(i<9)
                    i++;
                   code=codeArray[i];
                      }
                  }
              }
            code1 = code;
          spiwrite(code1,1);

         }

}



IOUJANE
4楼-- · 2019-07-17 23:58
 精彩回答 2  元偷偷看……
dirtwillfly
5楼-- · 2019-07-18 00:31
没看懂楼主有什么问题
dirtwillfly
6楼-- · 2019-07-18 02:29
IOUJANE 发表于 2017-5-11 16:30
触发按键p1.1,仅能改变一次数字量,各位大神能为我解答一下吗

第二次按键,数字量不变了?

一周热门 更多>