1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2068|回復(fù): 7
收起左側(cè)

如何補(bǔ)全這avr單片機(jī)程序,還要有按鍵檢測、延時(shí)去抖,等待抬起等環(huán)節(jié)。需要怎么補(bǔ)?

[復(fù)制鏈接]
ID:713870 發(fā)表于 2020-3-23 10:27 | 顯示全部樓層 |閱讀模式
單片機(jī)源程序如下:

#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);
                        }
                }
}

回復(fù)

使用道具 舉報(bào)

ID:191511 發(fā)表于 2020-3-23 14:13 | 顯示全部樓層
如果是初學(xué)者,建議先學(xué)51,因?yàn)?1的IO口配置很簡單,讀寫IO的值和位操作的方便性、可操作性都是單片機(jī)里最省事的,同時(shí)51的例子網(wǎng)上也有好多,便于脫開51硬件去學(xué)習(xí)外圍電路的使用(編程)。
回復(fù)

使用道具 舉報(bào)

ID:191511 發(fā)表于 2020-3-23 14:16 | 顯示全部樓層
教科書式的按鍵檢測一般是這樣的
if(某個(gè)按鍵按下)
     {
          表達(dá)式;
          while(按鍵按下) ;
回復(fù)

使用道具 舉報(bào)

ID:21069 發(fā)表于 2020-3-23 14:52 | 顯示全部樓層
建議你買一塊AVR的板子回來練,光自己整是折磨,板子才不到100,再或者用仿真軟件練,網(wǎng)上面很多AVR的案子,先搞定AVR的端口,其他的同51差別不大
回復(fù)

使用道具 舉報(bào)

ID:316880 發(fā)表于 2020-3-23 15:24 | 顯示全部樓層
wo4fisher 發(fā)表于 2020-3-23 14:16
教科書式的按鍵檢測一般是這樣的
if(某個(gè)按鍵按下)
     {

用   while(按鍵按下) ;  做判斷延時(shí)真的不好,如果有數(shù)碼管是閃
回復(fù)

使用道具 舉報(bào)

ID:473159 發(fā)表于 2020-3-23 15:56 | 顯示全部樓層
很簡單,壇子里大把的代碼,多練練手你就明白怎么做了
回復(fù)

使用道具 舉報(bào)

ID:687694 發(fā)表于 2020-3-23 18:35 | 顯示全部樓層
動手碼上缺失的代碼,然后調(diào)試。就這么補(bǔ)。
回復(fù)

使用道具 舉報(bào)

ID:21069 發(fā)表于 2020-3-23 19:35 | 顯示全部樓層
余生不負(fù) 發(fā)表于 2020-3-23 15:24
用   while(按鍵按下) ;  做判斷延時(shí)真的不好,如果有數(shù)碼管是閃

錯(cuò)!就看你將顯示函數(shù)放在什么地方
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表