首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

刚学单片机第一次做项目(抢答器),有不解的地方解决办法

2013-01-27 
刚学单片机第一次做项目(抢答器),有不解的地方1.写了一个外部中断服务程序,但似乎按什么键都不会显示(本意

刚学单片机第一次做项目(抢答器),有不解的地方
1.写了一个外部中断服务程序,但似乎按什么键都不会显示(本意是按一下某键就会发出一个中断,但没反应),前面也开中断了,开发板上面到底哪些键按下去才算中断?
void someone_keys() interrupt 0
{
  TR0=0;
  while(1)
  {
    if(!K1)
   {
    P1=0xFE;
    FM=0;
    delays(100);
    FM=1;
   }
   if(!K2)
   {
    P1=0xFD;
    FM=0;
    delays(100);
    FM=1;
   }
   if(!K3)
   {
    P1=0xFB;
    FM=0;
    delays(100);
    FM=1;
   }
   if(!K4)
   {
    P1=0xF7;
    FM=0;
    delays(100);
    FM=1;
   }  
  }
}
2.用定时器定时一秒还不怎么会。我给初值定时50ms,但不知道怎么去循环20次,试几次都不行。只会自己写函数延时。

刚接触,希望大虾能调教一下!谢谢!
[解决办法]
先是确定INT0是下降沿中断还是低电平中断,如果只是想看中断这个先不管
一个外部中断要开EX0还是E什么的
一个是总中断要开
后面2个置位了的话你把INT0拉低应该会进入中断程序的

你会定时50MS怎么就不会定时1秒了呢


uint t0cnt=0;

void timer0(void) interrupt n
{
  t0cnt++;
  if(t0cnt>=20)
  {
     t0cnt=0;
     //到这里就是1秒了
  }
  T0H=...;
  t0l=...;
}

[解决办法]
引用:
1.写了一个外部中断服务程序,但似乎按什么键都不会显示(本意是按一下某键就会发出一个中断,但没反应),前面也开中断了,开发板上面到底哪些键按下去才算中断?
void someone_keys() interrupt 0
{
  TR0=0;
  while(1)
  {
    if(!K1)
   {
    P1=0xFE;
    FM=0;
    delays(100……

中断里面有一个死循环? 这是错误的

热点排行