新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AT89C2051單片機(jī)與MT8880接口設(shè)計(jì)

AT89C2051單片機(jī)與MT8880接口設(shè)計(jì)

作者: 時(shí)間:2012-03-22 來(lái)源:網(wǎng)絡(luò) 收藏

軟件

基于圖1電路,在軟件時(shí),只需模擬的控制時(shí)序,用指令對(duì)P1口進(jìn)行讀寫(xiě)操作,控制芯片內(nèi)部的CRA、CRB等寄存器,從而實(shí)現(xiàn)對(duì)的發(fā)送/接收控制。在此,僅給出用C51編制的程序。

3.1 發(fā)送程序

程序執(zhí)行后,將以DTMF方式發(fā)送預(yù)存在數(shù)組W_BUF中的7位數(shù)碼(5135535)。
#include reg51.h>
#define uc unsigned char
#define ui unsigned int
/* 子函數(shù)(子程序)說(shuō)明 */
void initialize(void);
void tran_init(void);
void transmit(uc data *p,uc count);
void delay(ui l);
/* 主函數(shù)(主程序) */
void main(void)
{ uc data w_buf[7];
SP=0x5f;
/* 預(yù)存數(shù)碼5135535 */
w_buf[0]=5;
w_buf[1]=1;
w_buf[2]=3;
w_buf[3]=5;
w_buf[4]=5;
w_buf[5]=3;
w_buf[6]=5;
initialize();
tran_init();
transmit(w_buf,7);
initialize();
for(;;);}
/* 初始化子函數(shù) */
void initialize(void)
{ P1=0x3f; /* 讀SR */
P1=0x20; /* CRA=0000 */
P1=0x20; /* CRA=0000 */
P1=0x28; /* CRA=1000 */
P1=0x20; } /* CRB=0000 */
/* 發(fā)送初始化子函數(shù) */
void tran_init(void)
{ P1=0x29; /* CRA=1001 */
P1=0x21; } /* CRB=0001 */
/* 發(fā)送操作子函數(shù) */
void transmit(uc data *p,uc count)
{ uc i;
for (i=0;icount;i++,p++)
{ P1=*p; /* 發(fā)送數(shù)碼 */
delay(6000); /* 延時(shí) */
P1=0x3f; }}/* 讀SR */
/* 延時(shí)子函數(shù) */
void delay(ui l)
{ ui i;
for (i=0;il;i++);}



評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉