载入中...





站长个人入口

载入中...


载入中...

Study-3开发板已经好了,敬请关注!



我的分类(专题)

载入中...


日志更新
载入中...


最新评论
载入中...


留言板
载入中...


链接

开发板实验扩充:PWM输出
zl0801 发表于 2006-11-19 16:39:00

/*
 PWM program on
 51 Mcu Study Board II
 zl0801 2006-11-19 16:23
 
 zhaoliang0801@gmail.com 
 
 功能描述:
 利用开发板上的0~F16个按键,设置PWM的设定值,
 定时器中,比较当前值是否到达设定值,来改变
 LED的亮度。
 
 操作:下载程序后,按下0~F任意一个按键,观察
 观察现象,0为熄灭,F最亮
*/
#i nclude <reg51.h>
#i nclude <intrins.h>

#define CIRCLE 16   // 定义最大的循环值 等级

bit flag;   // 定义中断 按键标志位
unsigned char count=1,last;  // 计数变量 和 高电平持续变量
code unsigned char key_tab[16]={0x7e,0x7d,0x7b,0x77,0xbe,0xbd,0xbb,0xb7,
                  0xde,0xdd,0xdb,0xd7,0xee,0xed,0xeb,0xe7};
                 // 开发板按键 码值

sbit led=P2^0;  // PWM 输出端口

unsigned char ReadKey(void);   //扫描键盘 返回键值
void init(void);


void main(void)
{
 init();
 while(1)
 {
      P0=0XF0;   //预置P0 口准备读取键值
      if(flag)     //检测时候 进入中断
      {
        last=ReadKey();
        flag=0;   //清除 标志位
      }
 }
}

void init(void)
{
 EA=1;
 ET0=1;
 TH0=(65536-1000)/256;
 TL0=(65536-1000)%256;
 TR0=1;
 EX0=1;    //开启外部中断 0
 IT0=1;        // 设置成 下降沿触发方式
 count=1;
 last=1;
}

void into(void) interrupt 1
{
 count++;    // 每个1ms 变量 加1
 if(count>CIRCLE)  // 判断如果超过 设定的周期,置1
 {
  count=1;
 }
 if(count<=last)  // 否则,判断是否到达设定的比较值
  led=0;   // 小于 灯亮
 else 
   led=1;   // 大于 等灭
 TH0=(65536-1000)/256;
 TL0=(65536-1000)%256;
}

//========**************=====      
void key_scan()   interrupt 0    //外部中断 0  的优先级最高       
{       // 所以用 0
  flag=1;  //置标志位为 1
}

//************************
unsigned char ReadKey(void)
{
 unsigned char i,j,key,delay;
 j=0xfe;       //预置 准备 扫描
 
 for(i=0;i<4;i++)  //循环四次 扫描
   {
    P0=j;      //附值给P0
    for(delay = 50; delay > 0; delay--)
     _nop_();
    if((P0&0xf0)!=0xf0)   //如果有按键 按下
    {
      key=P0;   //读取键值
      break;   //跳出for 循环 或者 while 循环
    } 
    j=_crol_(j,1);       //循环左移 处理  
 
     key=0xff;
  }
  for(i=0;i<16;i++)   //循环16次 查表的到相应的键值
   if(key==key_tab[i])  
   return i;    //返回键值

  return 0x10;       //否则 返回错码
}


阅读全文 | 回复(0) | 引用通告 | 编辑
 


  • 标签:PWM 开发板 
  • 发表评论:
    载入中...