Hướng dẫn lập trình AVR cơ bản bằng CodeVision

fjand5

Kỹ sư
#4
Ừ, cảm ơn bạn, các video sau mình sẽ đính kèm code. Mấy cái trước quay xong xóa luôn rồi. Hè hè.
 

fjand5

Kỹ sư
#5
Code của bài Led sao băng đây. (các bạn nhớ thay đổi thư viên io.h cho phù hợp với từng phiên bản codevision nha)
Mã:
#include <io.h>(nếu biên dịch không được thì phải thay đổi thư viện này: io.h thành mega8.h)
#define LED0     PORTD.0
#define LED1    PORTD.1
#define LED2    PORTD.2
#define LED3    PORTD.3
#define LED4    PORTD.4
#define LED5    PORTD.5
#define LED6    PORTD.6
#define LED7    PORTD.7
#define muc1    2
#define muc2    10
#define muc3    25
#define muc4    55
unsigned int i=0,buoc=0,tg=0,
ds0=0,
ds1=0,
ds2=0,
ds3=0,
ds4=0,
ds5=0,
ds6=0,
ds7=0;

void main(void)
{
    DDRD=0b11111111;//=0xff=255;
    while (1)
    {  
        if(buoc==1)
        {
            ds0=muc4;
            ds1=0;
            ds2=0;
            ds3=0;
            ds4=0;
            ds5=0;
            ds6=0;
            ds7=0;    
        }
        if(buoc==2)
        {
            ds0=muc3;
            ds1=muc4;
            ds2=0;
            ds3=0;
            ds4=0;
            ds5=0;
            ds6=0;
            ds7=0;    
        }
        if(buoc==3)
        {
            ds0=muc2;
            ds1=muc3;
            ds2=muc4;
            ds3=0;
            ds4=0;
            ds5=0;
            ds6=0;
            ds7=0;    
        }
        if(buoc==4)
        {
            ds0=muc1;
            ds1=muc2;
            ds2=muc3;
            ds3=muc4;
            ds4=0;
            ds5=0;
            ds6=0;
            ds7=0;    
        }
         if(buoc==5)
        {
            ds0=0;
            ds1=muc1;
            ds2=muc2;
            ds3=muc3;
            ds4=muc4;
            ds5=0;
            ds6=0;
            ds7=0;    
        }
          if(buoc==6)
        {
            ds0=0;
            ds1=0;
            ds2=muc1;
            ds3=muc2;
            ds4=muc3;
            ds5=muc4;
            ds6=0;
            ds7=0;    
        }
           if(buoc==7)
        {
            ds0=0;
            ds1=0;
            ds2=0;
            ds3=muc1;
            ds4=muc2;
            ds5=muc3;
            ds6=muc4;
            ds7=0;    
        }      
        if(buoc==8)
        {
            ds0=0;
            ds1=0;
            ds2=0;
            ds3=0;
            ds4=muc1;
            ds5=muc2;
            ds6=muc3;
            ds7=muc4;    
        }
        if(buoc==9)
        {
            ds0=0;
            ds1=0;
            ds2=0;
            ds3=0;
            ds4=0;
            ds5=muc1;
            ds6=muc2;
            ds7=muc3;    
        }
        if(buoc==10)
        {
            ds0=0;
            ds1=0;
            ds2=0;
            ds3=0;
            ds4=0;
            ds5=0;
            ds6=muc1;
            ds7=muc2;    
        }
        if(buoc==11)
        {
            ds0=0;
            ds1=0;
            ds2=0;
            ds3=0;
            ds4=0;
            ds5=0;
            ds6=0;
            ds7=muc1;    
        }
        if(buoc==12)
        {
            ds0=0;
            ds1=0;
            ds2=0;
            ds3=0;
            ds4=0;
            ds5=0;
            ds6=0;
            ds7=0;    
        }
     
 
        //============
        if(i<ds0)
            LED0=1;
        else
            LED0=0;
        if(i<ds1)
            LED1=1;
        else
            LED1=0;
        if(i<ds2)
            LED2=1;
        else
            LED2=0;
        if(i<ds3)
            LED3=1;
        else
            LED3=0;
        if(i<ds4)
            LED4=1;
        else
            LED4=0;
        if(i<ds5)
            LED5=1;
        else
            LED5=0;
        if(i<ds6)
            LED6=1;
        else
            LED6=0;
        if(i<ds6)
            LED6=1;
        else
            LED6=0;
        if(i<ds7)
            LED7=1;
        else
            LED7=0;
        //+++++++++++
        tg++;
        if(tg==200)
        {
            tg=0;
            buoc++;
        }
        if(buoc==20)
            buoc=0;
     
     
     
     
        // cho i chay tu 0 den 100
        i++;
        if(i==100)
            i=0;  
    }
}
 
Sửa lần cuối bởi điều hành viên:

fjand5

Kỹ sư
#6
Xin chào, mình vừa làm thêm video ngắn về nút nhấn nè
Mã:
#include <io.h>
#define LED     PORTD
#define NUT0    PINB.0
#define NUT1    PINB.1
#define NUT2    PINB.2
#define NUT3    PINB.3    
unsigned long int i=0,kieu=0;
void chay()
{
    static int buoc=0;
    buoc++;    
    if(buoc==8)
        buoc=0;
    LED=1<<buoc;
}
void traiphai()
{
    static bit buoc=0;
    buoc++;    
    if(buoc)
        LED=0b00001111;  
    else
        LED=0b11110000;
}
void sole()
{
    static bit buoc=0;
    buoc++;    
    if(buoc)
        LED=0b10101010;  
    else
        LED=0b01010101;
}
void nhapnhay()
{
    static bit buoc=0;
    buoc++;    
    if(buoc)
        LED=0b0;  
    else
        LED=0b11111111;
}
void main(void)
{
    DDRD=0b11111111;               
    PORTB=0b00001111;
    while (1)
    {        
        if(NUT0==0)
            kieu=1;
        if(NUT1==0)
            kieu=2;
        if(NUT2==0)
            kieu=3;
        if(NUT3==0)
            kieu=4;
       i++;
        if(i==20000)
        {          
             if(kieu==1)
                chay();
             if(kieu==2)
                traiphai();
             if(kieu==3)
                sole();
             if(kieu==4)
                nhapnhay();        
            i=0;
        }
    }
}
 
Sửa lần cuối bởi điều hành viên:

Quảng cáo Google