欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 如何補全這avr單片機程序,還要有按鍵檢測、延時去抖,等待抬起等環節。需要怎么補? [打印本頁]

作者: 零帝    時間: 2020-3-23 10:27
標題: 如何補全這avr單片機程序,還要有按鍵檢測、延時去抖,等待抬起等環節。需要怎么補?
單片機源程序如下:

#include <iom16v.h>

#define  uint unsigned int

void delay10ms(void)
{
uint t;
for( t=0;t<1360;t++);
}

void main(void)
{
    SFIOR&=0xFB;
        DDRA = 0x00;                                                /*A口輸入*/
        PORTA = 0xFF;                                                /*A口上拉*/
    DDRB = 0xFF;                                                /*B口輸出*/
        PORTB = 0xFF;                                                /*LED全滅*/
        DDRC = 0xFF;
        PORTC = 0xFF;
        DDRD = 0x00;
        PORTD = 0xFF;

        while (1) {
                if ((PINA & (1 << PA0)) == 0)
                   {        
                      delay10ms();
                          if ((PINA & (1 << PA0)) == 0)
                          while((PINA & (1 << PA0)) == 0);//??????   
                          PORTB = ~(1 << PB0);                /*?????*/
                        }
                if ((PINA & (1 << PA1)) == 0)
                    {
                         delay10ms();
                         if ((PINA & (1 << PA1)) == 0)
                         while((PINA & (1 << PA1)) == 0);//??????
                         PORTB = ~(1 << PB1);
                        }
                if ((PINA & (1 << PA2)) == 0)
                   {
                     delay10ms();
                         if ((PINA & (1 << PA2)) == 0)
                         while((PINA & (1 << PA2)) ==0);//??????  
                        PORTB = ~(1 << PB2);
                        }
                if ((PINA & (1 << PA3)) == 0)
                   {
               
               
               
                        PORTB = ~(1 << PB3);
                        }
                if ((PINA & (1 << PA4)) == 0)
                    {
                        
                        PORTB = ~(1 << PB4);
                        }
                if ((PINA & (1 << PA5)) == 0)
                   {
                  
                        PORTB = ~(1 << PB5);
                        }
                if ((PINA & (1 << PA6)) == 0)
                    {
                        
                        PORTB = ~(1 << PB6);
                        }
                if ((PINA & (1 << PA7)) == 0)
                   {
                  
                        PORTB = ~(1 << PB7);
                        }
                }
}


作者: wo4fisher    時間: 2020-3-23 14:13
如果是初學者,建議先學51,因為51的IO口配置很簡單,讀寫IO的值和位操作的方便性、可操作性都是單片機里最省事的,同時51的例子網上也有好多,便于脫開51硬件去學習外圍電路的使用(編程)。
作者: wo4fisher    時間: 2020-3-23 14:16
教科書式的按鍵檢測一般是這樣的
if(某個按鍵按下)
     {
          表達式;
          while(按鍵按下) ;

作者: jinsheng7533967    時間: 2020-3-23 14:52
建議你買一塊AVR的板子回來練,光自己整是折磨,板子才不到100,再或者用仿真軟件練,網上面很多AVR的案子,先搞定AVR的端口,其他的同51差別不大
作者: 余生不負    時間: 2020-3-23 15:24
wo4fisher 發表于 2020-3-23 14:16
教科書式的按鍵檢測一般是這樣的
if(某個按鍵按下)
     {

用   while(按鍵按下) ;  做判斷延時真的不好,如果有數碼管是閃
作者: yoxi    時間: 2020-3-23 15:56
很簡單,壇子里大把的代碼,多練練手你就明白怎么做了
作者: lovexulu    時間: 2020-3-23 18:35
動手碼上缺失的代碼,然后調試。就這么補。
作者: jinsheng7533967    時間: 2020-3-23 19:35
余生不負 發表于 2020-3-23 15:24
用   while(按鍵按下) ;  做判斷延時真的不好,如果有數碼管是閃

錯!就看你將顯示函數放在什么地方




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1