Advertisement
a5768549

Untitled

Jul 24th, 2019
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.53 KB | None | 0 0
  1. void key_scan(void)
  2. {
  3.     if((PINB&0x3F)!=0x3F)
  4.     {
  5.         if((PINB&0x3F)!=0x3F)
  6.         {
  7.             delay_ms(20);
  8.             switch(PINB)
  9.             {
  10.                 case 0X3E:
  11.                     timer0_open();
  12.                 break;//S1
  13.                
  14.                 case 0X3B:
  15.                     timer0_close();
  16.                     switch(btn2_count)
  17.                     {
  18.                      case 1:btn2_1();break;
  19.                      case 2:btn2_2();break;
  20.                      case 3:
  21.                         delay_ms(1000);
  22.                         timer2_open();
  23.                         btn2_count= 1;
  24.                         break;
  25.                     }
  26.                 break;//S2
  27.                
  28.                 case 0X37:
  29.                     timer2_open();
  30.                 break;//S6             
  31.                 default:break;
  32.             }              
  33.             delay_ms(1);
  34.         }
  35.     }
  36. }
  37.  
  38. #pragma interrupt_handler timer0_ovf_isr:10    
  39. void timer0_ovf_isr(void)
  40. {    
  41.     TCNT0 = 0X05;
  42.     data++;
  43.    
  44.     if(data == 50)              // 50*(255-5)*(8M/64)=0.1s
  45.     {
  46.     if(count == 9)
  47.         {
  48.         count = 1;
  49.         count_num += 1;
  50.         }
  51.         if(count_num == 5)
  52.     {
  53.         count_num = 1;
  54.     }
  55.         data = 0;
  56.         S_OFF;
  57.         btn1();
  58.         count = count + 1;
  59.        
  60.     }
  61. }
  62. #pragma interrupt_handler timer2_ovf_isf:5
  63. void timer2_ovf_isf(void)
  64. {
  65.   TCNT2 = 0X83;//初值
  66.   data++;
  67.    
  68.     if(data = 50)               // 50*(255-5)*(8M/64)=0.1s
  69.     {
  70.         data = 0;
  71.         btn2_3_count += 1;
  72.        
  73.         btn2_3();
  74.         S_OFF;
  75.     }
  76. }
  77.  
  78. void timer2_open(void)
  79. {
  80.     CLI();
  81.     TCCR2 = 0X03;
  82.     TCNT2 = 0X83;
  83.     SEI();
  84. }
  85.  
  86. //CPU總體初始化
  87. void init_devices(void)
  88. {
  89.  CLI();
  90.  port_init();
  91.  MCUCR = 0x00;
  92.  GICR  = 0x00;
  93.  
  94.  TIMSK = 0x43;
  95.  TCCR0 =(0<<CS01) | (0<<CS00);
  96.  TCNT0 = 0X05;
  97.  
  98. TCCR2 = 0X00;//0000 0011
  99.      TCNT2 = 0X83;//初值
  100.  
  101.  SEI();
  102. }
  103.  
  104. void main(void)
  105. {
  106. SREG = 0X80;
  107.    init_devices();
  108.    while(1)
  109.    {  
  110.         key_scan();
  111.    }
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement