注意:访问本站需要Cookie和JavaScript支持!请设置您的浏览器! 打开购物车 查看留言付款方式联系我们
初中电子 单片机教材一 单片机教材二
搜索上次看见的商品或文章:
商品名、介绍 文章名、内容
首页 电子入门 学单片机 免费资源 下载中心 商品列表 象棋在线 在线绘图 加盟五一 加入收藏 设为首页
本站推荐:
借用大家两分钟时间 祝大家端午节快乐
文章长度[1387] 加入时间[2006/7/1] 更新时间[2024/3/13 11:24:47] 级别[3] [评论] [收藏]
  大家好,借用大家两分钟时间,希望可以和大家一起来探讨C51,谢谢
  文档:该程序功能是接收遥控信号。先发引导码,引道码9MS的电平和4.5MS的低电平够成,再开始发用户码(16位),接着发按键码(8位)最后发按键的反码(8位) 都是先发低位再发高位.
  数据0是由0.56MS的高电平和0.56ms的低电平构成,数据1是由0.56ms高电平和1.685ms的底电平构成。所以我用低电平的时间来判断是0还是1。
#include
static unsigned char data IRcode[3],IRcon,IRcon2;

void int1()interrupt 2 using 2 //INT1中断.
{
TMOD=0x01; //选择定时方式1
EX1=1; //开CPU中断
TH0=0xFC; // 768US
TL0=0xBF;
for(IRcon=0;IRcon<4;IRcon++) 将数组清0
{IRcode[IRcon]=0; }
IRcon2=0; //计数器清0
TR0=1;} //开定时器

void timer0(void) interrupt 4 using 0 //定时器0中断处理
{ int i,j;
char k;
TH0=0xFC;
TL0=0xBF;
while(INT1); // 等待9ms高电平的出现
{for(i=0;i<8600;i++) ;file://延时8.6ms
while(!INT1); // 等待4.5ms的低电平出现
for(j=0;j<4400;j++); //延时4.4ms

while(INT1); //等低电平出现.

TR0=1; //启动定时器
if(IRcon<4){ //如果没有数组没有装满
if(IRcon2<8){ //如果还没有装满8位
if(TH0<0x03) //如果低电平的时间小于768US
k=0; //发的是0
else
k=1; //否则发的是1;
IRcode[IRcon]=IRcode[IRcon]|k; //将0或1存入数组中;
IRcode[IRcon]>>=1; //由于遥控器是先发低位再发高位,所以先收到的是低位;
}
else
IRcon++; //否则装下一字节
IRcon2=0; //计数器清0
}}
else
TR0=0; //定时器关,
ET0=0;} //定时器0中断关闭

void main()
{TMOD=0X01 ; //选择定时方式1;
EA=1; //开CPU中断
EX1=1; //开INT1中断
IT1=1; } //INT1下降延有效

  我用的是11.0592的晶振,怎么寄存器没有收到数据,请大家指教谢谢!祝大家端午节快乐
希望我们能成为一起探讨C51朋友。我的邮箱是tuzhiwei722@163.com.

1、 本站不保证以上观点正确,就算是本站原创作品,本站也不保证内容正确。
2、如果您拥有本文版权,并且不想在本站转载,请书面通知本站立即删除并且向您公开道歉! 以上可能是本站收集或者转载的文章,本站可能没有文章中的元件或产品,如果您需要类似的商品请 点这里查看商品列表!
本站协议 | 版权信息 |  关于我们 |  本站地图 |  营业执照 |  发票说明 |  付款方式 |  联系方式
深圳市宝安区西乡五壹电子商行——粤ICP备16073394号-1;地址:深圳西乡河西四坊183号;邮编:518102
E-mail:51dz$163.com($改为@);Tel:(0755)27947428
工作时间:9:30-12:00和13:30-17:30和18:30-20:30,无人接听时可以再打手机13537585389