| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1143 人关注过本帖
标题:红外线键盘键值的程序,高手帮忙
只看楼主 加入收藏
ewinhuang
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-4-27
结帖率:0
收藏
 问题点数:0 回复次数:3 
红外线键盘键值的程序,高手帮忙
最近再编写一个红外线键盘键值的程序。红外线接收口的数据线接单片机的外部中断0口。红外线键盘发送数据,通过串口发送到上位机显示。
我的问题是,我按了一次按键后,上位机能正常显示我所按得键值。但第二次按就没有反应了,第二次程序也没有进入外部中断程序里了。我检查了好久,都不知道哪里出错了···大侠们,帮帮我看看吧。

#include<reg52.h>
sbit red=P3^2;
//sbit led=P1^0;
//sbit led1=P1^1;

bit b_red_start;
bit ok,b_into;
unsigned int time;
unsigned char n;
unsigned char red_temp[33];    //第0个数是存储引导码的时间,后32个存储各个位的用户码和数据码的时间
unsigned char red_data[4];

void deal_red_data();

void init_into()          //初始化
{
    TMOD=0x21;
    SCON=0x40;
    TH1=0xFD;
    TL1=0xFD;
    TH0=0xfe;    //定时0.5ms
    TL0=0x33;   
    IT0=1;
    ES=1;   
    EX0=1;   
    ET0=1;
    EA=1;
    TR0=1;
    TR1=1;        
}
void main()
{   
    time=0;
    n=0;

    init_into();
    while(1)
    {
        if(ok)
        {
            deal_red_data();
            ok=0;
        }

    }
}

void ix0() interrupt 0 using 2       //红外线的接收头数据线连接到单片机的外部中断0口
{
    if(b_red_start)            //测量用户码和数据码
    {
        red_temp[n]=time ;
        time=0;
        n++;
        if(n==33)
        {
            ok=1;
            n=0;
            b_red_start=0;
            b_into=1;        
        }
    }
     
    else if(time>=20&&time<33)//引导码
    {
        n=0;
        b_red_start=1;
        red_temp[n]=time ;
        time=0;
        n++;
        
    }
    else if(b_red_start==0)
    {        
        time=0;                        
    }
//    led=~led;

}

void deal_red_data()      //32位减至处理,前16位是用户码,后16位是数据码和数据码反码
{
    int i, j,k;
    unsigned char temp;
    temp=0;
    k=1;
    for(i=0;i<4;i++)
    {
        for(j=0;j<8;j++)
        {
            temp>>=1;
            if(red_temp[k]>3)
                temp|=0x80;
            else temp=temp;   
            k++;
        }
        red_data[i]=temp;
        temp=0;
        
    }   
    for(i=0;i<4;i++)             //通过串口发送检测到的键值到上位机观察
    {
        SBUF=red_data[i];
        while(!TI) ;
        TI=0;
    }  
            
}

 
void timer0() interrupt 1    using 1
{
    TH0=0xfe;    //定时0.5ms
    TL0=0x33;
    time++;   
}
     
搜索更多相关主题的帖子: 单片机 红外线 数据线 
2011-04-28 11:06
weds2001
Rank: 2
等 级:论坛游民
帖 子:27
专家分:34
注 册:2010-12-30
收藏
得分:0 
ARM 2440-stm32视频-dsp-CPLD-FPGA-PADS开发视频-嵌入式系统开发-单片机开发视频
=======(基于2440的视频教程)嵌入式Linux视频培训视频教程=======
视频文件列表:
第一部分:(Linux系统管理)
(嵌入式系统概述)
Linux介绍)
(Linux定制安装)
Linux命令1
Linux命令2
VI使用
系统管理)
Shell编程)
GCC程序编译)
GDB程序调试)
Makefile工程管理)
第二部分:
库函数方式访问文件)
系统调用方式访问文件)
时间编程)
进程控制理论)
进程创建
进程等待
进程通讯概述
管道通讯)
信号通讯)2-3-3
共享内存通讯)
(消息队列)2-4-1
(线程创建)2-5-1
第2阶段\第五天(多线程)\2-5-2(线程等待与清除)
(ARM程序设计)(ARM概述)
(ARM程序设计)(mini2440)
(ARM程序设计)(ARM寄存器)
(ARM程序设计)(ARM寻址方式)
(ARM程序设计)(ARM指令1)
(ARM程序设计)\第一部分(体系结构指令)\3-1-6(ARM指令2)
第三部分:(内核开发)
内核简介
Linux内核源代码)4-1-2
Linux内核配置与编译)
Linux内存管理)4-2-1
(Linux进程与内核地址空间)
Linux内核链表)
内核定时器)
内核进程)
进程调度)
系统调用)
Proc文件系统)
异常分析)
交叉工具链)
嵌入式系统构建)
bootloader介绍)
Uboot简介)
UBoot命令)
Uboot移植)
第四张部分:(驱动程序设计)
Linux驱动程序介绍)
字符设备驱动)
简单字符设备驱动实例分析)
并发控制)5-1-4(并发控制)
Ioctl设备控制)
内核等待队列)
阻塞型字符设备驱动)
poll设备方法)
自动创建设备文件)
mmap设备方法)
硬件访问)
LED驱动程序)
总线)
设备)
驱动)
platform驱动)
中断处理程序)
按键驱动)
网卡驱动程序设计)
CS8900A网卡驱动程序分析)
输入子系统)
触摸屏驱动程序)
PCI总线)
PCI驱动程序设计)
串口驱动程序)
===============================================
=======ARM STM32视频教程 +配套工程源代码=========
第一讲 ARM处理器和STM32微控制器(37分钟)
ARM处理器家族
    -ARM7系列介绍
    -ARM9系列介绍
    -ARM10和ARM11系列介绍
    -ARM Cortex系列介绍
ARM Cortex-M3的应用介绍
STM32微控制器
    -特征和资源讲解
    -管脚的配置灵活性讲解(即管脚的重映射功能)
    -微控制器功能框图讲解
开发工具IAR EWARM介绍
STM32微控制器最小系统
    -电源电路讲解(芯片电源功能块及开发板电源电路设计讲解)
    -时钟电路讲解(芯片时钟树及开发板时钟电路设计讲解)
    -复位电路讲解(芯片复位功能块及开发板手动和上电复位电路设计讲解)
    -启动配置电路讲解(芯片启动模式的讲解)
    -调试电路讲解(调试电路接口设计和所需仿真器讲解)
STM32微控制器的应用领域介绍
第二讲  STM32固件库说明及移植到IAR EWARM中的详细过程(33分钟)
IAR EWARM破解版的详细安装方法讲解(包括ST公司提供的更新文件的安装)
STM32固件库介绍
    -固件库的功能介绍
    -固件库的特点及有点介绍
    -固件库内部各源文件详细介绍
移植STM32固件库到IAR EWARM及IDE的操作方法
    -良好的工程创建的习惯(以GPIO的操作为例)
    -编译设置中的各选项详细讲解
    -编译成功的输出文件说明

第三讲  触摸屏的使用(14分钟)
    -电阻触摸屏的结构介绍
   -使用ADC来获取X,Y轴的坐标原理
   -程序详解
第四讲  存储器和总线结构(19分钟)
  -总线结构讲解
   -理解内部存储器的分配
   -lnkarm_flash.xcl和lnkarm_ram.xcl文件的理解
第五讲  RCC的配置和使用(55分钟)
     -理解各种复位
   -时钟树分析
   -Systick 系统嘀嗒定时器的讲解
   -相关寄存器理解
   -相关库函数的理解
   -程序讲解
第六讲 EXTI和NVIC的配置和使用(34分钟)
-STM32中的NVIC的理解
   -NVIC的寄存器和库函数的理解
   -STM32中的EXTI的理解
   -EXTI的寄存器和库函数的理解
   -程序讲解
      -外部模拟中断输入测试实验
第七讲 STM32的GPIO和AFIO的配置和应用(54分钟)

STM32的GPIO
    -GPIO资源介绍
    -GPIO工作模式讲解
    -GPIO的特点讲解
STM32的AFIO
    -芯片中的AFIO资源讲解
    -使用AFIO的方法和操作要领讲解
GPIO的初始化要素
    -选取工作管脚的参数配置讲解
    -选取管脚工作模式参数配置讲解
    -选取管脚速率参数配置讲解
AFIO的使用
    -如何映射功能块到相应管脚的方法讲解
GPIO和AFIO的寄存器讲解
GPIO的库函数讲解
工程源程序讲解
    -跑马灯实验详解(GPIO的输出操作)
    -按键识别和LED指示实验详解(GPIO的输入和输出操作)

第八讲    I2C总线(96分钟)

I2C总线中的概念讲解
I2C总线应用实例
    -以无绳电话基站为例来总结I2C接口通信的特点和注意事项的讲解
I2C总线的操作要素
    -工作模式讲解
    -数据的有效性讲解
    -传输开始和停止条件讲解
    -数据传输格式讲解
    -寻址方式讲解
    -仲裁和时钟同步讲解
基于I2C总线的读写工作过程
    -写数据通讯过程讲解
    -读数据通讯过程讲解
EEPROM AT24C02 的操作
    -特点讲解
    -各种写操作讲解
    -各种读操作讲解
软件模拟I2C时序
    -I/O模拟开始信号、停止信号、提供时钟信号、发送ACK、发送一个字节数据和接收一个字节数据的时序模拟讲解
    -连续多字节写函数伪代码实现讲解
    -连续多字节读函数伪代码实现讲解
STM32中的I2C控制器
    -特点讲解
    -I2C总线中出现的错误讲解
    -I2C中DMA的特性讲解
    -I2C主发送器工作流程讲解
    -I2C主接收工作流程讲解
STM32中的I2C控制器的寄存器详解
I2C库函数详解

工程源程序讲解
    -STM32的I2C控制器对AT24C02的各种操作功能函数的详解

第九讲 TFT模块的字符、中文和图片显示(26分钟)
TFT模块
    -特点介绍
    -坐标系和引脚讲解
TFT模块的配置和取模软件的取模原理
    -TFT模块的常用配置讲解(包括数据格式和扫描模式等)
    -取模软件为中文和图片取模的原理讲解
工程源程序讲解
    -字符显示功能函数讲解(含ASCII码表分析)
    -图片显示功能函数讲解
    -16*16中文显示功能函数讲解
    -48*48中文显示功能函数讲解
第十讲  单总线(33分钟)
DS18B20讲解
    -特点讲解
    -功能框图详解
    -各种寄存器及温度输出数据格式讲解
    -电源供电方法介绍
单总线讲解
    -特点讲解
    -硬件设计讲解
    -命令序列讲解
        -初始化
        -ROM命令
        -功能命令
    -信号时序讲解(即软件模拟)
        -复位脉冲和应答脉冲
        -写时隙
        -读时隙
工程源程序讲解
    -使用GPIO来操作DS18B20的各种功能你函数详解
第十一讲   SPI总线(85分钟)
SPI总线介绍
SPI总线的通讯时序(即软件模拟SPI通讯时序)
    -通讯框图讲解
    -四种SPI通讯时序讲解
    -GPIO模拟发送一位数据时序讲解
    -GPIO模拟接收一位数据时序讲解
    -GPIO模拟写一个字节数据的伪代码实现讲解
    -GPIO模拟读一个字节数据的伪代码实现讲解
STM32中的SPI控制器
    -特点介绍
    -NSS引脚的软硬件管理详解
    -SPI接口硬件设计讲解(全双工和单工通讯等)
    -使用硬件SPI容易出错的地方和操作要领讲解
FLASH AT45DB161D的操作
    -特点介绍
    -内部存储组织讲解
    -各种读写时序讲解
    -各种读写指令讲解
    -擦除指令讲解

STM32中的SPI控制器的寄存器详解
SPI的库函数详解

工程源程序讲解
    -STM32的SPI控制器对AT45DB161D的各种操作功能函数详解

第十二讲  SMT32中的ADC操作(88分钟)
ADC的特点讲解
ADC的功能框图讲解
ADC的各种转换模式讲解(包含规则组和注入组的操作原理和注意事项)
ADC的采样时间设置讲解
ADC的数据对齐讲解
ADC的模拟看门狗作用和使用讲解
ADC中的DMA特性和配置讲解
双ADC工作模式详解
ADC的寄存器讲解
ADC的库函数讲解

工程源程序讲解
    -单通道连续转换且使用DMA传输的功能程序详解
    -单通道连续转换且使用DMA传输和模拟看门狗,并实时更新报警标志的功能程序讲解
第十三讲  CAN总线(124分钟)

典型CAN总线网络系统结构详解(包括各组成部分的功能讲解)
CAN总线中的基本概念分析讲解
CAN总线的报文传输和结构讲解
    -各报文类型
    -各报文帧格式
    -位定时
    -帧间间隙
    -位填充
CAN总线特点讲解
STM32中的CAN控制器
    -特点讲解
    -功能框图讲解
    -工作模式讲解
    -初始化配置和参数设置讲解
    -发送数据操作讲解
    -接收数据操作讲解
    -过滤器工作原理讲解
    -接收FIFO工作过程讲解
    -总线出错管理讲解
    -位时序讲解

CAN控制器的寄存器详解
CAN控制器的库函数详解

工程源程序讲解
    -单块板的自测试详解(包括查询和中断方式,也含标准帧和扩展帧传输)
    -2块板的通信测试-查询方式详解
    -2块板的通信测试-中断方式详解
第十四讲 RTC和BKP(72分钟)
      -RTC模块要点讲解
    -RTC寄存器讲解
   -BKP特点
   -BKP寄存器讲解
   -RTC和BKP库函数讲解
   -例程详解
---------另有------------------
=======第一部分单片机相关======
1【单片机多媒体视频教程】(汇编)非常经典
2【单片机入门与提高精品视频教程】(汇编),非常适合初学者.
3【手把手教你学单片机 51单片机 C语言 视频教程 从入门到精通 视频】
4【数电/模电精品视频教程】,非常适合初学者.
5【汇编语言精品视频教程】,非常适合初学者.
6【单片机的C语言编程及电路设计培训视频教程】
7【标准C语言入门与提高视频教程】非常经典
8【AVR单片机入门与提高视频】
9【MSP430单片机经典视频】
10【PIC单片机经典视频】
11【电路分析应用技术视频】
======第二部分电路设计相关=========
【protel99se+DXP/2004 视频教程+实例】
【Protel(Altium Desinger)】电路设计视频教程
【Cadence经典视频教程】
【Orcad经典视频教程】
【PowerPCB入门视频教程】
=====第三部分嵌入式硬件部分========
1【ARM linux培训视频】
2【手把手教你学ARM之LPC2103入门篇 视频教程】
3【ARM STM32视频教程 +配套工程源代码】
4【(基于2440开发板的视频教程)嵌入式Linux视频培训视频】
5《学ARM和学单片机一样简单》视频】
6【ARM嵌入式LPC2200视频教学视频教程《嵌入式系统与结构》 】
7【ARM7嵌入式S3C44B0视频教学《嵌入式微处理器原理及应用》】
8【ARM嵌入式视频《嵌入式原理与应用》】
9【 台湾嵌入式培训】
10【嵌入式系统开发技术视频】
11【Altera FPGA 视频教程】
12【深入浅出玩转FPGA视频】
13【EDA(CPLD FPGA)入门与提高视频教程】
14【dsp入门与提高视频教程】   
15【DSP多媒体教程】
16【vhdl应用技术视频】
17【PLC精品视频】                  
18【数控应用经典技术视频】

=====第四部分嵌入式软件部分====
1,【Windows CE入门与提高视频教程】       2,【Vxworks应用技术】
3,【linux编程入门与提高视频教程】  4 【linux工程师软件开发视频】
5,【eCos、uC/OS-II开发技术】             6,【C++编程入门与提高视频教程】
7,【嵌入式仿真开发】
8,【JAVA开发视频】                       9,【.net开发视频】
→篇幅有限,更多内容请联系
Q_Q:7-5-9-7-3-7-8-3-3

MSN:jxb200200@

2011-05-15 17:49
samuelchen
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:73
专家分:179
注 册:2011-6-10
收藏
得分:0 
where is your keypress?

--------------------------
多么美好的清晨。
2011-06-19 09:08
快速回复:红外线键盘键值的程序,高手帮忙
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038093 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved