我的设计好棘手!是我笨吗!

来源:互联网 发布:九章算法国内怎么上 编辑:程序博客网 时间:2024/04/27 20:27

 三月份开始,我就天天恶梦不断!

学校遇到评估,苦的是我们学生!

毕业设计严了又严,难了又难!

好不容易过了一关又一关,最后却卡在了拨号芯片上。

看了一半又一遍的英文说明书,到头来还是一场空!

为什么?

好难!

MT8880的设计真不易么?

#include <spce061a.h>
#include <bit.h>
#define     uchar unsigned char
#define uc unsigned char

#define CM8880_D0   P0_0;
#define CM8880_D1   P0_1;
#define CM8880_D2   P0_2;
#define CM8880_D3   P0_3;
#define CM8880_CLK  P0_4;
#define CM8880_RS0  P0_5;
#define CM8880_CP   P0_7;
#define CM8880_RW   P1_6;
#define CM8880_CS   P1_7;
#define CM8880_DATA P0

uchar ucSendBuf,ucRcvBuf,ucStatusBuf;


//函数声明
void Delay(uchar k);
void CM8880_Rst();               //初始化MT8880,发送禁止,中断禁止,DTMF模式,突发模式
uchar CM8880_RD();               //读MT8880的接收数据寄存器
uchar CM8880_RS();               //读MT8880的状态寄存器
void CM8880_WC(uchar com);       // 写控制寄存器CRA或CRB
void CM8880_WD(uchar dat);       //写MT8880的发送数据寄存器

//主程序从这里开始
void main()
{
 //uc  w_buf[7];
 //int a,b,i;
  //i=0;
    //unsigned int uiData;
 
  //*P_IOB_Dir = 0xffff;   //设置IOB口为低8位相同高电平输出
  //*P_IOB_Attrib = 0xffff;
  //*P_IOB_Data = 0x00ff;
 
    Delay(2);
    CM8880_Rst();                   //初始化CM8880,发送禁止,中断禁止,DTMF模式,突发模式
    CM8880_WC(0x0D);                //写CRA,中断允许,DTMF模式,音频输出允许
    CM8880_WC(0x00);                //写CRB,突发模式,DTMF模式
   
    while(1)
    {
       while(KEY1);                //等待按键
        if((++ucSendBuf)==16)       //如果SEND_BUF=16,则令SEND_BUF=0
        {
           ucSendBuf=0;
        }
        /*预存数码*801*/
     // if()
        //{
       //uchar  w_buf[7]={'*','8','0','1'};
       // }
       // w_buf[0]='*';
        //w_buf[1]='8';
       // w_buf[2]='0';
       // w_buf[3]='1';
       // w_buf[4]=5;
        //w_buf[5]=3;
        //w_buf[6]=5;
     
       //CM8880_WD(w_buf[7]);       //发送数据到CM8880
        CM8880_WD(ucSendBuf);       //发送数据到CM8880
        do
        {
            ucStatusBuf=CM8880_RS();        //读CM8880的状态寄存器
            ucStatusBuf&=0x0f;
        }
        while((ucStatusBuf&0x04)==0);//在此等待接收有效信号,STATUS.2=1表示接收到DTMF信号.
        ucRcvBuf=CM8880_RD();        //读取数据  
        //HC595SendData(~ucStatusBuf); //显示状态寄存器的内容
        Delay(5);
        ucRcvBuf<<=4;
        ucRcvBuf|=ucSendBuf;
        //HC595SendData(~ucRcvBuf);   //显示接收到的数据和发送的数据,接收数据在高4位,
        Delay(5);                   //发送的数据在低4位
    }
}

   
    看不懂,看不懂!

原创粉丝点击