void Ircordpro(void)//红外码值处理函数
{
unsigned char i, j, k;
unsigned char cord,value;
k=1;
for(i=0;i<4;i++)//处理4个字节
{
for(j=1;j<=8;j++) //处理1个字节8位
{
cord=irdata[k];
if(cord>7)//大于某值为1
{
value=value|0x80;
}
else
{
value=value;
}
if(j<8)
{
value=value>>1;
}
k++;
}
IRcord[i]=value;
value=0;
} irpro_ok=1;//处理完毕标志位置1
这段代码的value没赋初值啊, value=value|0x80;什么意思啊,怎么把irdata[]中的数转为十六进制的啊??跪求答案啊!!
关于单片机 发射红外线遥控电视机疑问?
红外遥控插排 遥控器的编码方式也是NES。几个遥控器挺麻烦的,所以我就用STC11L04做了一个4和1遥控器,很方便的!STC1205A32S2比传统51单片机有所改进,有很多扩展功能,只要你将它的各项功能大概了解,上面的程序只是小问题了。不建议:使用中断产生38K载波。推免驱动发射二极管。用软件或者PWM产生38...
关于单片机外部中断的疑问(51)
--处理函数,不宜过长,中断频率,不宜过高。--尽量避免这种现象出现。是同样一个中断。这个问题源于一个关于红外遥控的程序,他的意思就是用一次中断来收集共33位数据,可是33个数据,应该有33次下降沿啊, 于是我就有了这样的问题,希望大家能帮我解释一下 --中断一次,计一次数。--当前是...
看了51单片机的串口通信,有一些疑问??
如果在串口中断服务中,程序较多,占去太多时间,正如你说的,那就会丢帧而出错,这是不允许的。
关于51单片机的几个问题
4、“MSC 51单片机定时\\计数器对外部脉冲进行计数时,要求输入的计数脉冲的高电平或低电平的持续时间不少于一个机器周期”,这句话哪里有错,实在没看出来 有错吗?--- 5、两数相减用补码运算时,是不是CY等于0表示第一个数小于第二个数,CY等于1表示第一个数大于第二个数 单片机的计算,是按...
51单片机矩阵键盘检测方面的问题
第一个问题,应该是考虑如果先开锁存器,在那一时刻,P0的值还是上一次给P0赋的值,下在一条语句才将这次的值给P0,这样会造成数码管的余辉,静态显示的时候,因为太快看不到,动态显示时,就会比较明显了。第二个问题他的程序应该检测的是高四位,是否被拉低,因为temp和0xf0与,低四位不管是...
51单片机汇编2进制转BCD码,程序有疑问
这段程序是正确的,我已经验证过了 R6=13=0x0d,R7=34=0x22,所以在R6R7中保存的是0x0d22,转换成10进制就是3362,而程序结束时,R2R3R4中保存的就是0x003362。总的思路就是R6R7中16进制数左移,将最高位推入R2R3R4的最低位,然后将R4进行DA,如果超过了99就会有进位,将R3自加倍再加进位...
单片机汇编语言的几个疑问
【绝对转移】51中只有AJMP、LJMP是绝对转移指令,都是直接跳转到固定地址。我们平时写的比如LJMP MAIN语句,源程序中并未表示出这一点,假设MAIN标志的程序段是从0102H开始的,此句编译后的机器码是02 01 02,02代表LJMP跳转,后两个字节0102则为目标地址,由于使用了2个字节指明目标地址,所以其范围就...
51单片机疑问
两个if语句改为while语句,并将下面的TR0=0;改成,TF0=0;修改如下:include<reg51.h> unsigned char LedChar[]={ 0xc0,0xf9,0xa4,0xb4,0x99,0x92,0x82,0xf8,0x80 };void main(){ TMOD=0x01;TH0=0xd8;TL0=0xf0;TR0=1;while(1){ while(TF0==0);TF0=0;TH0=0xd8;TL0=0xf0;...
关于单片机的一点问题
你提的第一个问题51单片机就可是实现,定时的话单片机里面有定时器功能,设置好相应的时间就可以控制灯亮灭,手动控制的话,用按钮接单片机IO口来控制灯泡亮灭。第二个问题就有点难度了,像你那样的要求也就和开发PLC差不多了。不光要对单片机很熟悉,还要开发上位机软件。第三个问题,单片机可以接触摸...
关于单片机串口通信,定时器产生波特率的疑问?
1、需要设定定时但不需要中断。无需重新赋值 2、定时器同时开启的话 他们会按照T0 T1 T2的同级顺序中断,