hungcdtk49
14-12-2012, 01:52 AM
anh chị giúp em đoạn code này với ạ. em mới tìm hiểu nên chưa được rõ lắm ah.
#include <18F4431.h> //KHAI BAO SU DUNG VDK 18F4431
#FUSES HS,NOWDT,NOPROTECT,NOLVP //THIET LAP CHE DO HOAT DONG CHO VDK
#USE DELAY(CLOCK=12000000) //SU DUNG BO DAO DONG THACH ANH 12Mhz
INT16 COUNT,VAROUTB=0B0000000011111111;//kHAI BAO BIEN 16 BIT
#INT_TIMER0 // CHUONG TRINH NGAT TIMER0
VOID NGATTIME0()
{
SET_TIMER0(6); // DAT GIA TRI DAU TIME0 LA 6
++COUNT;
IF(COUNT>=6000) //6000*(500/3)us=1s
{
COUNT=0;
VAROUTB=(VAROUTB<<8)|(VAROUTB>>8);
OUTPUT_B((INT8)VAROUTB);
}
}
VOID MAIN()
{
set_tris_b(0b00000000);
output_b((int8)VAROUTB);
ENABLE_INTERRUPTS(INT_TIMER0);
SETUP_TIMER_0(RTCC_INTERNAL|RTCC_DIV_2|RTCC_8_BIT) ;
ENABLE_INTERRUPTS(GLOBAL);
SET_TIMER0(6); //T_dinhthi=delay=2*(256-6)*(1/3)us=500/3us
WHILE(1)
{
}
}
đây là bài tập sử dụng timer0 làm 8 led nhấp nháy theo chu kì 2s
//6000*(500/3)us=1s
//T_dinhthi=delay=2*(256-6)*(1/3)us=500/3us
em không hiểu chỗ này, mong mọi người chỉ giúp
và chương trình em mô phỏng trên protues không đúng 2s các bác ạ
#include <18F4431.h> //KHAI BAO SU DUNG VDK 18F4431
#FUSES HS,NOWDT,NOPROTECT,NOLVP //THIET LAP CHE DO HOAT DONG CHO VDK
#USE DELAY(CLOCK=12000000) //SU DUNG BO DAO DONG THACH ANH 12Mhz
INT16 COUNT,VAROUTB=0B0000000011111111;//kHAI BAO BIEN 16 BIT
#INT_TIMER0 // CHUONG TRINH NGAT TIMER0
VOID NGATTIME0()
{
SET_TIMER0(6); // DAT GIA TRI DAU TIME0 LA 6
++COUNT;
IF(COUNT>=6000) //6000*(500/3)us=1s
{
COUNT=0;
VAROUTB=(VAROUTB<<8)|(VAROUTB>>8);
OUTPUT_B((INT8)VAROUTB);
}
}
VOID MAIN()
{
set_tris_b(0b00000000);
output_b((int8)VAROUTB);
ENABLE_INTERRUPTS(INT_TIMER0);
SETUP_TIMER_0(RTCC_INTERNAL|RTCC_DIV_2|RTCC_8_BIT) ;
ENABLE_INTERRUPTS(GLOBAL);
SET_TIMER0(6); //T_dinhthi=delay=2*(256-6)*(1/3)us=500/3us
WHILE(1)
{
}
}
đây là bài tập sử dụng timer0 làm 8 led nhấp nháy theo chu kì 2s
//6000*(500/3)us=1s
//T_dinhthi=delay=2*(256-6)*(1/3)us=500/3us
em không hiểu chỗ này, mong mọi người chỉ giúp
và chương trình em mô phỏng trên protues không đúng 2s các bác ạ