Ðề tài: Lỗi trong MPLAB C18
View Single Post
Old 24-03-2010, 08:41 AM   #1
lybao_huy
Đệ tử 5 túi
 
Tham gia ngày: Jan 2008
Bài gửi: 97
:
Lỗi trong MPLAB C18

mục đích của đoạn code này là làm nhấp nháy đèn led .
#include <p18cxxx.h>
#pragma config WDT = OFF
#pragma config FOSC = HS
#pragma config CPUDIV = OSC1_PLL2
#pragma config PWRT = ON
#pragma config BOR = ON
#pragma config BORV = 3
#pragma config MCLRE = ON
#pragma config LVP = OFF
void main (void)
{
TRISA=0;
OSCCONbits.SCS0=0; OSCCONbits.SCS1=0;//chọn bộ dao động chính
while(1){
PORTAbits.AN0=1;
delay();//hàm delay tôi không nêu ra ở đây,thời gian delay là 1s;
PORTAbits.AN0=0;
delay();//hàm delay tôi không nêu ra ở đây,thời gian delay là 1s;
}
với cách viết như trên thì nó chạy rất tốt. nhưng khi thay đổi:
OSCCONbits.SCS0=1; OSCCONbits.SCS1=0;//chọn bộ dao động timer1 làm xung hệ thống.
thì nó cũng có thời gian delay như trên(mặc dù tôi không có đặt bất cứ thạch anh vào timer1),tôi tưởng nó bị nhiễu từ bộ dao động chính, nên cho 2 pin của timer1 xuống đất,nhưng kết quả vẫn vậy,tôi không hiểu. có ai giải thích dùm hộ.

Tôi còn có một thắc mắc nữa là:
cũng là đoạn code trên nhưng:
OSCCONbits.SCS0=0; OSCCONbits.SCS1=0;//chọn bộ dao động chính
while(1){
PORTAbits.AN0=~LATAbits.LATA0;//toggle pin A0
delay();
}
đoạn code này cũng chạy tốt.nhưng
while(1){
PORTAbits.AN0=~PORTAbits.AN0;//toggle pin A0
delay();
}
lại không chạy, mặc dù pin A0 nối ra đèn led thông qua một điện trở và không có tụ .

thay đổi nội dung bởi: lybao_huy, 24-03-2010 lúc 09:26 AM.
lybao_huy vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn