电脑开不了机了,一开机就自动断电,过维修期了,没钱啊,只好自己修,修了一天,没办法,想省钱就得花时间,终于找出毛病来了,原来内存条松了,还好硬件没毛病,要不又得出血了!
等了N多天,优酷不知怎么搞的,视频迟迟不能发布,现在分享我的源程序
/***********************************************************
实验名称:红外发射编码
程序说明:红外发射管产生38K的方波
***********************************************************/
#include<reg52.h>
sbit LED=P3^6; //红外发射
sbit key=P3^7;
bit Flag;
void Init_Timer0(void)
{
TMOD |= 0x01;
TH0=0xf0;
TL0=0x00;
EA=1;
ET0=1;
TR0=1;
}
/******************************************************************/
/* 定时器0初始化 */
/******************************************************************/
void Timer0_isr(void) interrupt 1 using 1
{
TH0=0x0f; /* Init value */
TL0=0x00;
Flag=!Flag;
}
/******************************************************************/
/* 主函数 */
/******************************************************************/
main()
{
unsigned int j;
Init_Timer0(); //定时器初始化
while(!key)
{
if(Flag)
{
for(j=0;j<27;j++)//大约38KHz
{
LED=!LED; //发射管输出
}
}
}
}
/***********************************************************
红外接收,串口显示
***********************************************************/
#include <REG52.h>
#define uchar unsigned char
uchar data IRcode[4];
uchar CodeTemp;
uchar i,j,k;
sbit IRsignal=P3^2;
/**************************延时0.9ms子程序**********************/
void Delay0_9ms(void)
{uchar j,k;
for(j=18;j>0;j--)
for(k=20;k>0;k--) ;
}
/***************************延时1ms子程序**********************/
void Delay1ms(void)
{uchar i,j;
for(i=2;i>0;i--)
for(j=230;j>0;j--) ;
}
/***************************延时4.5ms子程序**********************/
void Delay4_5ms(void)
{uchar i,j;
for(i=10;i>0;i--)
for(j=225;j>0;j--) ;
}
/**************************** 延时子程序 ************************/
void Delay(void)
{uchar i,j,k;
for(i=200;i>0;i--)
for(j=200;j>0;j--)
for(k=3;k>0;k--) ;
}
/************************中断0解码服务子程序**********************/
void int0(void) interrupt 0 using 2
{
EA=0;
for(k=0;k<10;k++)
{Delay0_9ms();
if (IRsignal==1)
{k=10;break;}
else if(k==9)
{while(IRsignal==0);
Delay4_5ms(); //跳过持续4.5ms的高电平
for(i=0;i<4;i++) //分别读取4个字节
{for(j=1;j<=8;j++) //每个字节8个bit的判断
{ while(IRsignal==0); //等待上升沿
Delay0_9ms();
if(IRsignal==1) //如果IRsignal是"1",则向右移入一位"1"
{Delay1ms();
CodeTemp=CodeTemp|0x80;
if(j<8) CodeTemp=CodeTemp>>1;
}
else
if(j<8)CodeTemp=CodeTemp>>1;//如果IRsignal是"0",则向右移一位,自动补"0"
}
IRcode[i]=CodeTemp;
CodeTemp=0;
}
for(i=0;i<4;i++) //通过串口将代码发出
{
SBUF=IRcode[i];
while(!TI); //等待一个字节发送完毕
TI=0;
}
Delay();
}
}
EA=1;
}
/***********************串口初始化程序*********************/
void initUart(void)
{
TMOD|=0x20;
SCON=0x50;
PCON|=0x80;
TH1=0xff; //57600bps @ 11.0592MHz
TL1=0xff;
TR1=1;
}
/**************************主程序*************************/
void main()
{ initUart();
IT0=1;
EX0=1;
EA=1; //开所有中断
CodeTemp=0;
Delay();
while(1);
}
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 | |
【分享评测,赢取加热台】使用8051单片机驱动WS2812被打赏40分 |