พอดี ผมทำโปรเจค เกี่ยวกับ ภาษาซี ใช้ PIC18F45J10 ในการ ควบคุมหลอดLED โดยจะให้ลอดไฟ LED ติดทีละดวง ในระยะเวลา 5 วินาที ติด1 จนครบ 8 ดวง ซึ่ง ผมได้เขียน code ไปแล้ว แต่ว่ามัน Run ไม่ได้ และไม่รู้ว่าผิดตรงไหน ด้วย ผู้ที่มีความรู้ ได้โปรด ช่วยผมแก้ทีนะครับ ผมต้องรีบ ทำส่ง อาจารย์ แล้ว ขอบคุณครับ
#include <xc.h>
#pragma config XINST = OFF
#pragma config STVREN = OFF
#pragma config WDTEN = OFF
#pragma config CP0 = OFF
#pragma config FCMEN = OFF
#pragma config FOSC2 = ON
#pragma config FOSC = HS
unsigned char input,flag,n,H,cmt,cnt;
void initialize();
void start(unsigned char T);
void stop(unsigned char H);
//FUNCTION
void initailize()
{
//Timer2 for 10ms
//T2CON = 0b00101011; //postscal (0101)1:6 , off , prescale(11) 1:16
//PR2=0b11111111; //
//T2CONbits.TMR2ON = 1; //start trimer2
//Trimer0 for sampling 5 s
T0CON=0b00000111; // prescale 1:256
TMR0L=0x10;
TMR0H=0x2D;
T0CONbits.TMR0ON=1;
//portd is output
TRISD = 0b00000000; // LED display is output
flag=0;
n=0;
}
void start(unsigned char T)
{
if(T==0)
{
switch(n){
case 0:
PORTDbits.RD0=0;
n=1;
// H=2;
break;
case 1:
PORTDbits.RD1=0;
n=2;
// H=2;
break;
case 2:
PORTDbits.RD2=0;
n=3;
// H=2;
break;
case 3:
PORTDbits.RD3=0;
n=4;
// H=2;
break;
case 4:
PORTDbits.RD4=0;
n=5;
// H=2;
break;
case 5:
PORTDbits.RD5=0;
n=6;
// H=2;
break;
case 6:
PORTDbits.RD6=0;
n=7;
// H=2;
break;
case 7:
PORTDbits.RD7=0;
n=0;
// H=2;
break;
}
}
}
//void stop(unsigned char H)
//{
// if(H)
// {
// PORTD=0xFF;
// H=0;
// }
//}
void main()
{
H=1;
input=5;
while(1){
// input
cnt=input;
cmt=input;
if(INTCONbits.TMR0IF)
{
cmt--;
if(cmt==0)
{
H=0;
}
}
start(H);
}
}
ช่วยทีครับ ช่วยแก้code ภาษาซี ให้ผมทีครับ ผมแก้จนปวดหัว แล้วววว
#include <xc.h>
#pragma config XINST = OFF
#pragma config STVREN = OFF
#pragma config WDTEN = OFF
#pragma config CP0 = OFF
#pragma config FCMEN = OFF
#pragma config FOSC2 = ON
#pragma config FOSC = HS
unsigned char input,flag,n,H,cmt,cnt;
void initialize();
void start(unsigned char T);
void stop(unsigned char H);
//FUNCTION
void initailize()
{
//Timer2 for 10ms
//T2CON = 0b00101011; //postscal (0101)1:6 , off , prescale(11) 1:16
//PR2=0b11111111; //
//T2CONbits.TMR2ON = 1; //start trimer2
//Trimer0 for sampling 5 s
T0CON=0b00000111; // prescale 1:256
TMR0L=0x10;
TMR0H=0x2D;
T0CONbits.TMR0ON=1;
//portd is output
TRISD = 0b00000000; // LED display is output
flag=0;
n=0;
}
void start(unsigned char T)
{
if(T==0)
{
switch(n){
case 0:
PORTDbits.RD0=0;
n=1;
// H=2;
break;
case 1:
PORTDbits.RD1=0;
n=2;
// H=2;
break;
case 2:
PORTDbits.RD2=0;
n=3;
// H=2;
break;
case 3:
PORTDbits.RD3=0;
n=4;
// H=2;
break;
case 4:
PORTDbits.RD4=0;
n=5;
// H=2;
break;
case 5:
PORTDbits.RD5=0;
n=6;
// H=2;
break;
case 6:
PORTDbits.RD6=0;
n=7;
// H=2;
break;
case 7:
PORTDbits.RD7=0;
n=0;
// H=2;
break;
}
}
}
//void stop(unsigned char H)
//{
// if(H)
// {
// PORTD=0xFF;
// H=0;
// }
//}
void main()
{
H=1;
input=5;
while(1){
// input
cnt=input;
cmt=input;
if(INTCONbits.TMR0IF)
{
cmt--;
if(cmt==0)
{
H=0;
}
}
start(H);
}
}