?? 8810.c
字號(hào):
/********************************************
ht9200/ht9170程序
雙音多頻接收發(fā)射驅(qū)動(dòng)程序
********************************************/
#include "stc89c52.h"
#include "12232.h"
#include <intrins.h>
#include "8810.h"
sbit CE = P2^3 ;
sbit DATA = P2^4 ;
sbit CLK = P2^5 ;
sbit RING = P2^2 ;
sbit SW = P2^1 ;
#define uchar unsigned char
#define uint unsigned int
uchar code Table_DTMF[] = {0x0a,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0d,0x0e,0x0f,0x00,0x0b,0x0c} ;
// 0 1 2 3 4 5 6 7 8 9 A B C D * #
/*************************************************
Name :send_ht9200
Describ :發(fā)送一個(gè)DTMF
Input :in : 要發(fā)送的DTMF(0x00-0x0f)
Output :無(wú)
Writer :孫福朋 2004.10.5
*************************************************/
void time(uint delaytime)
{
while(--delaytime);
}
void send_ht9200(uchar in)
{
uchar i ;
CLK = 1 ;
CE = 0 ; //使能HT9200,開(kāi)始起振
Delay(20) ; //延時(shí)20MS 保證HT9200起振時(shí)間
//EA = 0 ; //關(guān)中斷
in = Table_DTMF[in] ; //取真正要發(fā)送的數(shù)值
for(i=0;i<5;i++) //循環(huán)傳送5位
{
if(((in>>i)&0x01) == 1) //取低位
DATA = 1 ;
else DATA = 0 ;
time(14) ; //延時(shí)30US 保證時(shí)鐘寬度
CLK = 0 ; //時(shí)鐘下降延鎖存數(shù)據(jù)
time(14) ; //延時(shí)30US 保證時(shí)鐘寬度
CLK = 1 ; //時(shí)鐘恢復(fù)
}
DATA = 1 ;
//EA = 1 ; //開(kāi)中斷
Delay(120) ; //延時(shí)130MS,保證DTMF發(fā)出有一定時(shí)間的波形
CE = 1 ; //關(guān)使能,停止起振
}
/*************************************************
Name :check_Init
Describ :初始化 檢測(cè)程序中用到的端口和變量
Input :無(wú)
Output :無(wú)
Writer :孫福朋 2004.10.5
*************************************************/
void check_Init()
{
//D0 = 1 ;
//D1 = 1 ;
//D2 = 1 ;
//D3 = 1 ;
//DV = 1 ;
//OE = 0 ;
CE = 1 ;
CLK = 1 ;
DATA = 1 ;
//Check0 = 1 ; //初值為振鈴無(wú)效時(shí)的狀態(tài),振鈴為低有效
//Counter0 = 20 ;
//Check1 = 0 ; //初值為DV無(wú)效時(shí)的狀態(tài),DV為高有效
//Counter1 = 20 ;
//Check_DX_Counter = 0 ;
//Check_DX_Counter1 = 0 ;
//Check_DX_flag = 0 ;
//CheckDxFlag = 0 ;
//Is_CheckDxFlag = 0 ;
}
//撥11位手機(jī)函數(shù)
extern void BoHao11(unsigned char N1,unsigned char N2,unsigned char N3,unsigned char N4,unsigned char N5,
unsigned char N6,unsigned char N7,unsigned char N8,unsigned char N9,unsigned char N10,unsigned char N11)
{
SW=0;SW=0;Delay(500);
SW=1;SW=1;Delay(500);
send_ht9200(N1);Delay(50);
send_ht9200(N2);Delay(50);
send_ht9200(N3);Delay(50);
send_ht9200(N4);Delay(50);
send_ht9200(N5);Delay(50);
send_ht9200(N6);Delay(50);
send_ht9200(N7);Delay(50);
send_ht9200(N8);Delay(50);
send_ht9200(N9);Delay(50);
send_ht9200(N10);Delay(50);
send_ht9200(N11);Delay(50);
}
//撥8位電話函數(shù)
extern void BoHao8(unsigned char N1,unsigned char N2,unsigned char N3,unsigned char N4,unsigned char N5,
unsigned char N6,unsigned char N7,unsigned char N8)
{
SW=0;SW=0;Delay(500);
SW=1;SW=1;Delay(500);
send_ht9200(N1);Delay(50);
send_ht9200(N2);Delay(50);
send_ht9200(N3);Delay(50);
send_ht9200(N4);Delay(50);
send_ht9200(N5);Delay(50);
send_ht9200(N6);Delay(50);
send_ht9200(N7);Delay(50);
send_ht9200(N8);Delay(50);
}
//撥8位電話函數(shù)
extern void BoHao7(unsigned char N1,unsigned char N2,unsigned char N3,unsigned char N4,unsigned char N5,
unsigned char N6,unsigned char N7)
{
SW=0;SW=0;Delay(500);
SW=1;SW=1;Delay(500);
send_ht9200(N1);Delay(50);
send_ht9200(N2);Delay(50);
send_ht9200(N3);Delay(50);
send_ht9200(N4);Delay(50);
send_ht9200(N5);Delay(50);
send_ht9200(N6);Delay(50);
send_ht9200(N7);Delay(50);
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -