?? text1.c
字號:
#include<at89x52.h>
#include<intrins.h>
//#define ovf P3_6
#define cs P3_7 //片選
#define pd P3_6 //功耗選擇
#define oem P3_5 //放音時的一端結束標志,低有效
#define pr P3_4 //高時為放音,低時為錄音
#define a8 P1_1 //為十條地址線
#define a9 P1_0
#define date P0
#define deng P1_6
#define deng1 P1_7
#define uchar unsigned char
#define uint unsigned int
void play1(void);
uchar display[6]={0x08,0x09,0x10,0x05,0x07,0x09};
void play(uchar a);
uchar addr[17]={0x00,0x0a,0x14,0x1e,0x28,
0x32,0x3c,0x46,0x50,0x5a,
0x64/*10*/,0x6e/*.點..*/,0x8c/*現在溫度是*/,
0xaa/*攝氏度*/,0xb4,0xbe,0xc8};//0到9的地址每個地址有1秒鐘時間//0到9的地址每個地址有1秒鐘,十,點,當前溫度為,攝氏度
void delay(uchar a);
uchar num;
uchar numb,numb1;
void play2(void);
/**********************************************
放音程序
***********************************************/
void play(uchar a)
{uchar b8=0,b9=0;
cs=1;
pd=0;
date=addr[a];
a8=b8;
a9=b9;
pr=1;_nop_();_nop_();_nop_();
cs=0;
while(oem==1);
cs=1;
pd=1;_nop_();_nop_();_nop_();
}
void play2(void)
{
uchar g;
for(g=0;g<15;g++)
{
play(g);
delay(1500);
}
}
void play3(void)
{
uchar ak=0;
delay(40000);
play(ak);
}
/************************************************************
錄音程序
**********************************************************/
void record(uchar a)
{ uchar b8=0,b9=0;
cs=1;
pd=0;
date=addr[a];
a8=b8;
a9=b9;
pr=0;_nop_();_nop_();_nop_();
cs=0;
while(!P2_0);
cs=1;
pd=1;_nop_();_nop_();_nop_();
}
/*****************************************************************************
錄音主程序
ISD2560內部存儲器共分600段地址,每一段對應0.1秒,故總共60秒,隨便你分幾段來用;
該段程序的用法:當按下某段的錄音鍵時開始錄音,當放開該鍵時錄音結束,按一下該段
的放音鍵,可聽聽錄音效果,不過該段錄音時間要把握,以免覆蓋到下
段地址去
*******************************************************************************/
/*******************************************
按鍵掃描
**********************************************/
void delay(uchar a)
{uchar i,j;
for(i=0;i<a;i++)
for(j=0;j<110;j++);
}
void keyscan()
{
if(P2_0==0)
{
delay(10);
if(P2_0==0)
{
TMOD=0x01;
TH0=0x02;
TL0=0X18;
EA=1;
ET0=1;
TR0=1;
deng=1;
}
}
if(P2_1==0)
{
delay(10);
if(P2_1==0)
{
play(numb);
while(!P2_1);
numb++;
}
if(numb==15)
{
numb=0;
}
}
if(P2_2==0)
{
delay(10);
if(P2_2==0)
{
play2();
}
}
if(P2_3==0)
{
delay(10);
if(P2_3==0)
{
delay(10000);
play3();
}
}
if(P2_6==0)
{
delay(10);
if(P2_6==0)
{
delay(510);
play(12);
delay(510);
play(display[0]);
delay(510);
play(10);
delay(510);
play(display[1]);
delay(510);
play(11);
delay(510);
play(display[5]);
delay(110);
play(14);
}
}
}
void t0(void) interrupt 1 using 0
{
uchar df;
for(df=0;df<15;df++)
{ deng=0;
record(df);
while(!P2_0);
deng=1;
}
if(df==15)
{
deng1=0;
df=0;
}
}
/*void te(void) interrupt 2 using 1
{
EA=0;
ET1=0;
TR1=0;
deng=1;
numb1++;
if(numb1==15)
{
numb1=0;
}
} */
void main()
{P2=0xff;
P1=0xff;
P0=0xff;
P3=0xff;
num=2;
numb=0 ;
numb1=9 ;
while(1)
{
keyscan();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -