|
下降沿計數(shù)顯示程序 和 轉(zhuǎn)發(fā)程序 寫在一起
P3.2口接收的是紅接收管產(chǎn)生的38KHZ信號,如何讓單片機(jī)在接收然后原封不動再P3.1發(fā)射出去呢?
#include<reg52.h> //基于E18d80NK的計數(shù)器案例
#define uint unsigned int
#define uchar unsigned char
uchar code table[]= "total num:";
uchar code tablex[]= "00000";
sbit lcden=P3^4;
sbit lcdrs=P3^5;
sbit lcdrw=P2^7;
sbit led=P1^2;
sbit single=P3^2;//低電平有效
sbit OUT=P3^1;
uchar count;
uint num;//0~65536
void delay(uint xms);
void write_com(uchar com);//位置;
void write_data(uchar date);//數(shù)據(jù);
void init();//lcd初始化
void write_sfm(uchar add,uchar date);
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void write_com(uchar com)//位置
{
lcdrs=0;
lcden=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)//數(shù)據(jù)
{
lcdrs=1;
lcden=0;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()//lcd初始化
{
uchar nm;
led=0;
lcden=0;
lcdrw=0;
write_com(0x38);//設(shè)置16*2顯示,5*7點陣,8位數(shù)據(jù)接口
write_com(0x0c);//設(shè)置開顯示,不顯示光標(biāo)
write_com(0x06);//寫一個字符后地址加1
write_com(0x01);//顯示清0,數(shù)據(jù)指針清零
write_com(0x80);
for(nm=0;nm<10;nm++)//第一行顯示
{
write_data(table[nm]);
delay(5);
}
write_com(0x80+0x40);
for(nm=0;nm<5;nm++) //第二行顯示
{
write_data(tablex[nm]);
delay(5);
}
}
void write_sfm(uchar add,uchar date)
{
write_com(0x80+0x40+add);
write_data(0x30+date);
}
void main()
{
init();
TMOD=0X89;
EA=1;
ET0=1;
IT0=1;//設(shè)置INT0為跳變沿觸發(fā)方式
EX0=1;//打開中斷允許
while(1);
}
void T1_time()interrupt 0 //外部中斷服務(wù)程序,跳變沿觸發(fā)方式
{
num++;
write_sfm(4,num%10);
write_sfm(3,num%100/10);
write_sfm(2,num%1000/100);
write_sfm(1,num%10000/1000);
write_sfm(0,num/10000);
}
第二個
#include <AT89x52.h>
sbit single=P3^2;
sbit OUT=P3^1;
void main( void )
{
while(1)
{
if(single==1);
{
OUT=1;
}
else
{
OUT=0
}
}
}
|
|