?? mt8880.h
字號:
#ifndef __MT8880_h__
#define __MT8880_h__
//本程序用到了bit.h頭文件,
/******MT8880與MCU接口聲明**********************
************************************************/
//D0,D1,D2,D3-->P0.4,P0.5,P0.6,P0.7 (數據反了)
#define DQ1 P0_4
#define DQ2 P0_5
#define DQ3 P0_6
#define DQ4 P0_7
#define CP_8880 P0_3 //模式選擇端口
#define CLK_8880 P0_2 //MT8880控制時鐘
#define RS0_8880 P1_4 //寄存器選擇,與RW_8880配合選擇
#define RW_8880 P1_5 //對MT8880讀寫操作
#define CS_8880 P1_6 //對MT8880讀寫操作
/******函數聲明*******************************
***********************************************/
void initialize(void); //MT8880初始化
void tran_init(void); //MT8880發送DTMF初始化
void transmit(unsigned char data0);//MT8880發送數據程序
//void auto_show(uchar show_data);
//*************delay_ms********************************
void delay_10usMT8880(unsigned char x)
{
while(x--)
{
// ClearWatchDog();
*P_Watchdog_Clear=C_WDTCLR;
}
}
void delay_msMT8880(unsigned char cnt)
{
unsigned char i;
do {
i = 4;
do {
delay_10usMT8880(39);
} while(--i);
} while(--cnt);
}
/******MT8880初始化************************
******************************************/
void initialize(void)
{
CS_8880=0;
RS0_8880=1;
RW_8880=1;
CLK_8880=1;
delay_msMT8880(10);
CLK_8880=0;
delay_msMT8880(10);// P1=0x3f;/* 讀SR */
RW_8880=0;
CLK_8880=1;
delay_msMT8880(10);
//P1=0x00;// CRA=0000
DQ1=0;DQ2=0;DQ3=0;DQ4=0;
delay_msMT8880(10);
CLK_8880=0;
delay_msMT8880(10);
CLK_8880=1;
delay_msMT8880(10);
//P1=0x00;/* CRA=0000
DQ1=0;DQ2=0;DQ3=0;DQ4=0;
delay_msMT8880(10);
CLK_8880=0;
delay_msMT8880(10);
CLK_8880=1;
delay_msMT8880(10);
//P1=0x08;/* CRA=1000
DQ4=1;DQ3=0;DQ2=0;DQ1=0;
delay_msMT8880(10);
CLK_8880=0;
delay_msMT8880(10);
CLK_8880=1;
delay_msMT8880(10);
//P1=0x00;/* CRB=0000
DQ4=0;DQ3=0;DQ2=0;DQ1=0;
delay_msMT8880(10);
CLK_8880=0;
delay_msMT8880(10);
RW_8880=1;
CLK_8880=1;
delay_msMT8880(10);
CLK_8880=0;
delay_msMT8880(10);// P1=0x3f;/* 讀SR */
CS_8880=1;
/*
CS_8880=0;
//P3=0xff;
//P0=0XFF;
// DQ1=1;DQ2=1;DQ3=1;DQ4=1;
RS0_8880=1;RW_8880=1;
CLK_8880=1;
delay_msMT8880(2);
CLK_8880=0;
delay_msMT8880(20);
//P3=0x70; // CRA=0000
DQ1=0;DQ2=0;DQ3=0;DQ4=0;
CP_8880=1;CLK_8880=1;RW_8880=0;RS0_8880=1;
CLK_8880=1;
delay_msMT8880(2);
CLK_8880=0;
delay_msMT8880(20);
//P3=0x70; //* CRA=0000
DQ1=0;DQ2=0;DQ3=0;DQ4=0;
CP_8880=1;CLK_8880=1;RW_8880=0;RS0_8880=1;
CLK_8880=1;
delay_msMT8880(2);
CLK_8880=0;
delay_msMT8880(20);
//P3=0x71; // CRA=1000
DQ1=0;DQ2=0;DQ3=0;DQ4=1;
CP_8880=1;CLK_8880=1;RW_8880=0;RS0_8880=1;
CLK_8880=1;
delay_msMT8880(2);
CLK_8880=0;
delay_msMT8880(20);
//P3=0x71; //* CRB=0000
DQ1=0;DQ2=0;DQ3=0;DQ4=1;
CP_8880=1;CLK_8880=1;RW_8880=0;RS0_8880=1;
CLK_8880=1;
delay_msMT8880(2);
CLK_8880=0;
delay_msMT8880(20);
//P3=0xff; //* 讀SR
DQ1=1;DQ2=1;DQ3=1;DQ4=1;
RS0_8880=1;RW_8880=1;
CLK_8880=1;
delay_msMT8880(2);
CLK_8880=0;
delay_msMT8880(20);
CS_8880=1;
*/
}
/******MT8880發送DTMF初始化****************
******************************************/
void tran_init(void)
{/*
CS_8880=0;
//P3=0x79; /* CRA=1001
DQ1=1;DQ2=0;DQ3=0;DQ4=1;
CP_8880=1;CLK_8880=1;RW_8880=0;RS0_8880=1;
CLK_8880=1;
delay_10usMT8880(10);
CLK_8880=0;
delay_10usMT8880(100);
//P3=0x78; //* CRB=0000 普通雙音頻模式*/ /*注意:0001突發模式
DQ1=1;DQ2=0;DQ3=0;DQ4=0;
CP_8880=1;CLK_8880=1;RW_8880=0;RS0_8880=1;
CLK_8880=1;
delay_10usMT8880(10);
CLK_8880=0;
delay_msMT8880(200);
CS_8880=1;
*/
CS_8880=0;
RS0_8880=1;
RW_8880=0;
CLK_8880=1;
delay_msMT8880(10);
//P1=0x09;/* CRA=1001 */
DQ4=1;DQ3=0;DQ2=0;DQ1=1;
delay_msMT8880(10);
CLK_8880=0;
delay_msMT8880(10);
CLK_8880=1;
delay_msMT8880(10);
//P1=0x01; //* CRB=0001 //-----------------
DQ4=0;DQ3=0;DQ2=0;DQ1=0; //0000為突發方式,0001為一直發方式(不改變他就一直自動發),
delay_msMT8880(10);
CLK_8880=0;
CS_8880=1;
}
/******MT8880發送數據程序******************
******************************************/
/*
void transmit(unsigned char data0)
{
CS_8880=0;
//P3=data0; //* 發送數碼
DQ1=data0&0x01;
DQ2=(data0>>1)&0x01;
DQ3=(data0>>2)&0x01;
DQ4=(data0>>3)&0x01;
RS0_8880=0;
RW_8880=0;
CLK_8880=1;
delay_msMT8880(10); // 延時
CLK_8880=0;
delay_msMT8880(50);
//P3=0xff;
// DQ1=1;DQ2=1;DQ3=1;DQ4=1;
RS0_8880=1;RW_8880=1;
CLK_8880=1;
delay_10usMT8880(10);
CLK_8880=0;
delay_msMT8880(1);
CS_8880=1;
}
*/
/* 發送操作子函數 */
void transmit(unsigned char data0)
{
CS_8880=0;
RS0_8880=0;
RW_8880=0;
CLK_8880=1;
delay_msMT8880(10);
//P1=data0; //* 發送數碼
switch(data0)
{
case 1:
DQ1=1;
DQ2=0;
DQ3=0;
DQ4=0;
break;
case 2:
DQ1=0;
DQ2=1;
DQ3=0;
DQ4=0;
break;
case 3:
DQ1=1;
DQ2=1;
DQ3=0;
DQ4=0;
break;
case 4:
DQ1=0;
DQ2=0;
DQ3=1;
DQ4=0;
break;
case 5:
DQ1=1;
DQ2=0;
DQ3=1;
DQ4=0;
break;
case 6:
DQ1=0;
DQ2=1;
DQ3=1;
DQ4=0;
break;
case 7:
DQ1=1;
DQ2=1;
DQ3=1;
DQ4=0;
break;
case 8:
DQ1=0;
DQ2=0;
DQ3=0;
DQ4=1;
break;
case 9:
DQ1=1;
DQ2=0;
DQ3=0;
DQ4=1;
break;
case 10:
DQ1=0;
DQ2=1;
DQ3=0;
DQ4=1;
break;
case 11:
DQ1=1;
DQ2=1;
DQ3=0;
DQ4=1;
break;
case 12:
DQ1=0;
DQ2=0;
DQ3=1;
DQ4=1;
break;
default:break;
}
/*
DQ1=data0&0x01;
DQ2=(data0>>1)&0x01;
DQ3=(data0>>2)&0x01;
DQ4=(data0>>3)&0x01;
*/
delay_msMT8880(10); //* 延時
CLK_8880=0;
//P1=0x3f;//* 讀SR
delay_msMT8880(50);
CS_8880=1;
}
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -