2659|3

74

帖子

0

TA的资源

一粒金砂(初级)

C51刚学习~~ [复制链接]

昨天学习跑马灯~几乎没什么错误~~兴奋了一晚~~~
今天试着写入按键的程序~都没有反应~郁闷了半天~~
代码如下(书本上的代码) 编译没错也没警告~~
下载到单片机~按了几下按钮 LED灯都没反应 郁闷啊~~~不知道是单片机的按钮坏了 还是其它原因~~

  1. /**********************************************
  2. *   File: DirKeyboard_3.C
  3. *   Description: Direct Keyboard Interface Example
  4. *   Created Date:  2007-10-01
  5. *   Last Modified: 2007-10-01
  6. *   Author: Jeffrey - Schicksal@126.com
  7. *   Notes: None
  8. **********************************************/
  9. #include

  10. unsigned char Read_Keyboard();


  11. void delay(unsigned int t)
  12. {
  13.                 for(;t>0;t--);       
  14. }

  15. void main()
  16. {
  17.                 unsigned char LED_Status = 0xff;                        // 定义键值
  18.                 unsigned char Keyboard_Status = 0xff;                // 定义键值
  19.                 unsigned char Keyboard_Status_Old = 0xff;        // 上一次的键值保持
  20.                 unsigned char jTemp;                                                // 临时变量
  21.                 unsigned char iTemp;                                                // 临时变量
  22.                 while(1)
  23.                 {
  24.                                 Keyboard_Status = Read_Keyboard();                        // 读取按键值
  25.                                 if(Keyboard_Status != Keyboard_Status_Old)        // 如果有键状态发生改变
  26.                                 {
  27.                                         jTemp = Keyboard_Status^Keyboard_Status_Old; // 计算状态改变的位
  28.                                         for(iTemp = 1;iTemp<129;iTemp<<1)                          // 扫描状态位       
  29.                                         {
  30.                                                 if(iTemp&jTemp)                                                   // 状态改变
  31.                                                 {
  32.                                                         if(iTemp & Keyboard_Status_Old)                 // 按键被按下
  33.                                                         {
  34.                                                                 LED_Status ^= iTemp;                            // Toggle LED
  35.                                                         }
  36.                                                         else                                                                 // 按键释放
  37.                                                         {
  38.                                                                 // Nothing                                                          // 不做任何操作
  39.                                                         }
  40.                                                 }
  41.                                         }
  42.                                 }
  43.                                 P0 = ~LED_Status;                                                                 // 点亮相应的LED灯
  44.                                
  45.                                 //********************主程序部分*********************//
  46.                                 // Add your code here
  47.                                 //********************主程序部分*********************//
  48.                 }
  49. }
  50.        

  51. unsigned char Read_Keyboard()
  52. {
  53.                 unsigned char Keys_Value;                                         // 定义键值变量
  54.                 unsigned char Keys_Temp;
  55.                
  56.                 do
  57.                 {
  58.                         P2 = 0xff;                                                                         // P2口置高,准备读取按键状态
  59.                         Keys_Temp = P2;                                                                  // 读取按键状态
  60.                         delay(150);                                                                         // 消抖延时
  61.                         P2 = 0xff;                                                                         // P2口置高,准备读取按键状态
  62.                         Keys_Value = P2;                                                         // 读取按键状态
  63.                 }
  64.                 while(Keys_Value != Keys_Temp);                         // 如果读取状态不一致,则重复读取键值
  65.                 return Keys_Value;                                                         // 返回按键状态值
  66. }

复制代码

最新回复

哦~~原来这本书说I/O引脚和自己单片I/O引脚是不位置的~~郁闷  详情 回复 发表于 2009-4-4 13:21

回复
举报

66

帖子

0

TA的资源

一粒金砂(初级)

我还是刚入门哈~~~不知道有什么地方白痴了~~请大家多多谅解~~*^_____^*

回复

76

帖子

0

TA的资源

一粒金砂(初级)

c++没学过!
  这是用JavaScript写的希望对你有用!
var s = "                                                                      欢迎来到我的个人网站";
var i = s.length-1;
function paoMa()
{
        var str = s.substring(i,s.length);
        window.status = str;
        i--;
        if(i == -1)
           i = s.length-1;
         
         setTimeout("paoMa()",100);
}

回复

80

帖子

0

TA的资源

一粒金砂(初级)

哦~~原来这本书说I/O引脚和自己单片I/O引脚是不位置的~~郁闷

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表