◀ Previous Next ▶ Up ▲


witpoko.com


>>>>>---- ช่วยด้วยคร๊าบ PIC กับ CCS ---------<<<<<<<

ผมให้นับเลขจาก 1-9999 โดยออก Port D และ Port A เป็นคัวเลือกว่าให้ตัวไหนออก แต่ Debug ดูแล้วโดย MPLAB การหารมันไม่ได้ เช่น 1000/10 มันไม่ได้ 100 พระเจ้าปวดหัว ลองเอารันดูครับ หรือมีตัว C ตัวอื่นที่จะแนะนำมั้ยครับ ขอบคุณครับ
*************************************
#if defined(__PCB__)
#include <16c56.h>
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_A3, rcv=PIN_A2) // Jumpers: 11 to 17, 12 to 18

#elif defined(__PCM__)
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) // Jumpers: 8 to 11, 7 to 12

#elif defined(__PCH__)
#include <18F452.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) // Jumpers: 8 to 11, 7 to 12
#endif


#byte port_b=6

BYTE CONST SEG_MAP[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
BYTE CONST seg[4]={0x01,0x02,0x04,0x08};

void display(int num)
{
int x=0,y=1000,n=0x03;
int1 zr=0;
output_a(0x00);

while(true){
x=num/n;
num=num%y;
if(x>0){zr=1;}
if(zr!=0)
{
output_d(SEG_MAP[x]);
output_a(seg[n]);
delay_ms(1000);
}
y=y/10;
n--;
}


}

void main() {
int num=0,n;
set_tris_a(0);
set_tris_b(0);
set_tris_d(0);

while(TRUE)
{
display(num);
delay_ms(1000);
if(num==9999)num=0;
}

}


จากคุณ : dew -[ 24 พ.ค. 49 - 17:59:06 A:210.213.9.226 X: ]





กระทู้ยอดนิยม