芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

飞芯科技-芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

芯片破解IAP15F2K60S2单片机定时器延时问题

芯片破解单片机源程序如下:

  1. 芯片破解//实验目标效果:用按键控制LED灯的闪烁频率。
  2. 芯片破解//实验实际效果:单片机上电后,LED会以1秒/次的频率闪烁;按下S5,频率为5秒/次,若此时再按下S4,LED灭很久,时间未知;在按下S5后按下S6,改变频率为30秒/次;在按下S6后按下S7,改变频率为60秒/次,若此时再按下S5,LED灭很久,时间未知(远大于所有设定时间)。可推测,在上电后,按键只能顺序按一次有用(即从S4→S7),若逆序按下,则LED灯会一直熄灭很久。
  3. #include <stc15f2k60s2.h>
  4. #include <absacc.h>
  5. #include <intrins.h>
  6. void button(void);//独立键盘函数。
  7. void led(void);//led函数。
  8. void Delayms(unsigned int ms);//软件延时函数,单位为微秒。
  9. void Timer0Init(void);//定时器0初始化函数。
  10. void T0_Ser(void);//定时器0中断服务函数。
  11. unsigned char time,lt;//LED亮灯间隔时间参数。
  12. unsigned int count=0;//定时器0中断服务程序计数参数,延长中断时间。
  13. int main(void)
  14. {
  15.         XBYTE[0xA000]=0;//初始化无关元器件。
  16.         EA=1;//开总中断。
  17.         Timer0Init();
  18.         while(1)
  19.         {
  20.                 button();
  21.         }
  22.         return 0;
  23. }
  24. void button(void)//独立键盘函数。
  25. {
  26.         unsigned char key;
  27.         P3=0x0f;
  28.         key=(P3&0x0f);
  29.         if(key!=0x0f)//第一次消抖开始。
  30.         {
  31.                 Delayms(5);
  32.                 key=(P3&0x0f);
  33.                 if(key!=0x0f)
  34.                 {
  35.                         key=(P3&0x0f);//第一次消抖结束。
  36.                         switch(key)
  37.                         {
  38.                                 case 0x07:time=1;break;//s4。
  39.                                 case 0x0b:time=2;break;//s5。
  40.                                 case 0x0d:time=3;break;//s6。
  41.                                 case 0x0e:time=4;break;//s7。
  42.                                 default:XBYTE[0x8000]=0;//判断键值是否正确。
  43.                         }
  44.                         while(key!=0x0f)//第二次消抖开始。
  45.                                 key=(P3&0x0f);//第二次消抖结束。
  46.                 }
  47.         }
  48.         switch(time)//根据按键给lt赋不同值,即让定时器延时不同的时间。
  49.         {
  50.                 case 1:lt=1;break;//LED闪烁频率为1秒(亮1秒、灭1秒)。
  51.                 case 2:lt=5;break;//LED闪烁频率为5秒(亮5秒、灭5秒)。
  52.                 case 3:lt=30;break;//LED闪烁频率为30秒(亮30秒、灭30秒)。
  53.                 case 4:lt=60;break;//LED闪烁频率为5秒(亮60秒、灭60秒)。
  54.         }
  55. }
  56. void Timer0Init(void)                //10毫秒@12.000MHz
  57. {
  58.         AUXR &= 0x7F;                //定时器时钟12T模式
  59.         TMOD &= 0xF0;                //设置定时器模式,16位自动重载。
  60.         TL0 = 0xF0;                //设置定时初值
  61.         TH0 = 0xD8;                //设置定时初值
  62.         TF0 = 0;                //清除TF0标志
  63.         TR0 = 1;                //定时器0开始计时
  64.         ET0=1;                        //开定时器0中断。
  65. }
  66. void T0_Ser(void) interrupt 1//定时器0中断服务函数。
  67. {
  68.         count++;
  69.         if(count<(100*lt))
  70.                 XBYTE[0x8000]=0;//LED亮。
  71.         else if(count>=(100*lt))
  72.                 XBYTE[0x8000]=0xff;//LED灭。
  73.         if (count==(200*lt))
  74.                 count=0;
  75.         
  76. }


联系方式

地址:石家庄市新华区民族路77号华强广场D座2009
电话:0311-88816616/87087811
手机:13315190088
传真:0311-67901001
联系人:张工
网址:www.feixindz.com
邮箱:feixindz@163.com
微信:xinpianjiemi
QQ:527263666/568069805

在线客服
热线电话

企业微信