Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 26

#INCLUDE <16f877.

h>

#FUSES NOWDT, PUT, HS, NOPROTECT, NOLVP

#USE DELAY(CLOCK=20M)

CONST UNSIGNED CHAR MA7DOAN[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};

INT8 DEM,MA_DEM;

VOID MAIN()

SET_TRIS_B(0X00);

WHILE(1)

FOR(DEM=0;DEM<10;DEM++}\)

MA_DEM=MA7DOAN[DEM];

OUTPUT_B(MA_DEM);
DELAY_MS(300);

* Other solve:

#INCLUDE <16f877.h>

#FUSES NOWDT, PUT, HS, NOPROTECT, NOLVP

#USE DELAY(CLOCK=20M)

CONST UNSIGNED CHAR MA7DOAN[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};

INT8 DEM;

VOID MAIN()

SET_TRIS_B(0X00);

WHILE(1)

FOR(DEM=0;DEM<10;DEM++}\)

OUTPUT_B(MA7DOAN[DEM]);

DELAY_MS(300);

}
#INCLUDE <16f877.h>

#FUSES NOWDT, PUT, HS, NOPROTECT, NOLVP

#USE DELAY(CLOCK=20M)

CONST UNSIGNED CHAR MA7DOAN[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};

INT8 DEM;
VOID MAIN()

SET_TRIS_B(0X00);

WHILE(1)

FOR(DEM=0;DEM<100;DEM++)

OUTPUT_C(MA7DOAN[DEM/10]);

OUTPUT_B(MA7DOAN[DEM%10]);

DELAY_MS(300);

}
#INCLUDE <16f877.h>

#FUSES NOWDT, PUT, HS, NOPROTECT, NOLVP

#USE DELAY(CLOCK=20M)

CONST UNSIGNED CHAR MA7DOAN[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};

INT8 DEM,I;

VOID HIENTHI_DELAY()

{
FOR (I=0;I<200,I++)

OUTPUT_B(MA7DOAN[DEM%10]); OUTPUT_LOW(PIN_D0); DELAY_MS(1);


OUTPUT_HIGH(PIN_D0);

OUTPUT_B(MA7DOAN[DEM/10]); OUTPUT_LOW(PIN_D1); DELAY_MS(1);


OUTPUT_HIGH(PIN_D1);

VOID MAIN()

SET_TRIS_B(0X00); SET_TRIS_D(0X00);

OUTPUT_D(0XFF);

WHILE(1)

FOR(DEM=0;DEM<100;DEM++)

HIENTHI_DELAY();

}
* CO CHONG DOI NUT INV

#INCLUDE <16f877.h>

#FUSES NOWDT, PUT, HS, NOPROTECT, NOLVP

#USE DELAY(CLOCK=20M)
#DEFINE ON PIN_E0

#DEFINE OFF PIN_E1

#DEFINE INV PIN_E2

INT8 X=0;

VOID CHONGDOI_INV()

IF(!INPUT(INV))

DELAY_MS(20);

IF(!INPUT(INV))

X=~X; OUTPUT_D;

WHILE(!INPUT(INV));

VOID MAIN()

SET_TRIS_E(0XFF);

SET_TRIS_D(0X00);

WHILE(1)

X=0; OUTPUT_D(X);

WHILE (INPUT(ON)); X=0X0F; OUTPUT_D(X);

DO

CHONGDOI_INV();

} WHILE(INPUT(OFF));

}
}

#INCLUDE <16f877.h>

#INCLUDE<TV_KEY4X4>

#FUSES NOWDT, PUT, HS, NOPROTECT, NOLVP


#USE DELAY(CLOCK=20M)

CONST UNSIGNED CHAR MA7DOAN[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};

SIGNED INT8 MP;

VOID MAIN()

SET_TRIS_D(0X00); OUTPUT_D(0X7F);

SET_TRIS_B(0XF0); PORT_B_PULLUPS(0XF0);

WHILE(TRUE)

MP=KEY_4X4();

IF (MP!=0XFF)

OUTPUT_D(MA7DOAN[MP]);

* TV_KEY4X4.C

CONST UNSIGNED CHAR MAQUETCOT[4]={0XFE,0XFD,0XFB,0XF7};

UNSIGNED INT QUET_MT_PHIM()

SIGNED INT8 MAPHIM,HANG,COT;

MAPHIM=HANG=0XFF;

FOR(COT=0;COT<4;COT++)

OUTPUT_B(MAQUETCOT[COT]);

IF (!INPUT(PIN_B4)) {HANG=0; BREAK;}

ELSE IF (!INPUT(PIN_B5)) {HANG=1; BREAK;}

ELSE IF (!INPUT(PIN_B6)) {HANG=2; BREAK;}

ELSE IF (!INPUT(PIN_B7)) {HANG=3; BREAK;}


}

IF (HANG!=0XFF) MAPHIM=COT*4+HANG;

RETURN(MAPHIM);

UNSIGNED INT KEY_4X4()

UNSIGNED INT8 MPT1,MPT2;

MPT1=QUET_MT_PHIM();

IF(MPT1!=0XFF)

DELAY_MS(10);

MPT1=QUET_MT_PHIM();

DO {MPT2=QUET_MT_PHIM();} WHILE (MPT2==MPT1);

RETURN(MPT1);

}
#INCLUDE <TV.16F887.C>

#BIT TMR1IF=0X0C.0

INT8 X;

VOID MAIN()

SET_TRIS_D(0X00);

X=0X00;

OUTPUT_D(X);

SETUP_TIMER_1(T1_INTERNAL| T1_DIV_BY_8);

SET_TIMER1(0);

WHILE(TRUE)

IF(TMR1IF==1)
{ X=~X; OUTPUT_D(X); TMR1IF=0;}

#INCLUDE <TV.16F887.C>

#BIT TMR1IF=0X0C.0

INT8 X,DEM;

VOID MAIN()

SET_TRIS_D(0X00);

X=0X00;

OUTPUT_D(X);

SETUP_TIMER_1(T1_INTERNAL| T1_DIV_BY_8);

SET_TIMER1(3036);

WHILE(TRUE)

{
IF(TMR1IF==1)

TMR1IF=0; SET_TIMER1(3036); DEM++;

IF (DEM==10)

{ OUTPUT_D(X); X=~X; DEM=0}

#INCLUDE <TV_16F877.C>

#BIT TMR0IF = 0X0B.2

UNSIGNED INT8 X;

VOID MAIN()

SET_TRIS_D(0X00);

X=0; OUTPUT_D(X);

SETUP_TIMER_0(RTCC_INTERNAL| T0_DIV_256);

SET_TIMER0(0);

WHILE(1)

IF (TMR0IF==1)

TMR0IF=0; SET_TIMER0(0);

X=~X; OUTPUT_D;

}
}

* DELAY 2 GIAY:

#INCLUDE <TV_16F877.C>

#BIT TMR0IF = 0X0B.2

UNSIGNED INT8 X,DEM;

VOID MAIN()

SET_TRIS_D(0X00);

X=0; DEM=0; OUTPUT_D(X);

SETUP_TIMER_0 (RTCC_INTERNAL| T0_DIV_256);

SET_TIMER0(60);

WHILE(1)

IF (TMR0IF==1)

TMR0IF=0; SET_TIMER0(61); DEM++;

IF (DEM==100)

{ X=~X; OUTPUT_D(X); DEM=0;}

}
#INCLUDE <TV_16F877.C>

#BIT TMR2IF = 0X0C.1

UNSIGNED INT8 X;

VOID MAIN()

SET_TRIS_D(0X00);

X=0; OUTPUT_D(X);

SETUP_TIMER_2(T2_DIV_BY_16, 255,16);

WHILE(1)

IF (TMR0IF==1)

TMR2IF=0; X=~X; OUTPUT_D(X);

}
}

#INCLUDE<TV_16F877.C>

UNSIGNED INT8 T0;

VOID MAIN()

SET_TRIS_B(0X00); SET_TRIS_C(0X00); SET_TRIS_D(0X00);

SETUP_TIMER_0(T0_EXT_L_TO_H | T0_DIV_1);

SET_TIMER(0);

WHILE(1)

T0=GET_TIMER0();

OUTPUT_B(MA7DOAN[T0%10]);

OUTPUT_C(MA7DOAN[T0/10%10]);

OUTPUT_D(MA7DOAN[T0/100]);
}

#INCLUDE <TV_16F877.C>

UNSIGNED INT16 T1;

UNSIGNED CHAR MADONVI,MACHUC,MATRAM;

VOID GIAIMA()

MATRAM=MA7DOAN[T1/100];

MACHUC=MA7DOAN[T1/10%10];

MADONVI=MA7DOAN[T1%10];

IF (MATRAM==0XC0)

MATRAM=0XFF;

IF (MACHUC ==0XC0 )

{
MACHUC=0XFF;

VOID HIENTHI()

OUTPUT_B(MADONVI); OUTPUT_LOW (PIN_D0);

DELAY_MS(1); OUTPUT_HIGH(PIN_D0);

OUTPUT_B(MACHUC); OUTPUT_LOW (PIN_D1);

DELAY_MS(1); OUTPUT_HIGH(PIN_D1);

OUTPUT_B(MATRAM); OUTPUT_LOW (PIN_D2);

DELAY_MS(1); OUTPUT_HIGH(PIN_D2);

VOID MAIN()

SET_TRIS_B (0X00); SET_TRIS_D(0X00);

SETUP_TIMER_1 (T1_EXTERNAL | T1_DIV_BY_1);

SET_TIMER1(0);

WHILE(1)

T1=GET_TIMER1()

GIAIMA();

HIENTHI();

IF (T1==1000) SET_TIMER1(0);

}
}
#INCLUDE <TV_16F877.C>

#DEVICE ADC=10

UNSIGNED INT16 KQADC;

UNSIGNED INT J,MATRAM;


VOID HIEN_THI()

MATRAM=MA7DOAN[KQADC/100];

IF (MATRAM==0XC0) MATRAM=0XFF;

OUTPUT_B (MA7DOAN[KQADC%10]);

OUTPUT_C (MA7DOAN[KQADC/10%10]);

OUTPUT_D (MATRAM);

VOID MAIN()

SET_TRIS_B(0X00); SET_TRIS_D (0X00);

SET_TRIS_C (0X00); SET_TRIS_A (0XFF);

SETUP_ADC (ADC_CLOCK_INTERNAL);

SETUP_ADC_PORTS(SAN0);

SETUP_ADC_CHANNEL(0);

WHILE (TRUE)

KQADC=0;

FOR (J=0; J<200; J++)

KQADC=KQADC+READ_ADC();

DELAY_MS(1);

KQADC=KQADC/2.046;

KQADC=KQADC/200;

HIEN_THI();

}
#INCLUDE <TV_16F877.C>

UNSIGNED INT8 X;

#INT_TIMER1

VOID INTERRUPT_TIMER1()

X=~X;

OUTPUT_D(X);

VOID MAIN()

SET_TRIS_D (0X00);

X=0X00; OUTPUT_D (X);

SETUP_TIMER_1 ( T1_INTERNAL | T1_DIV_BY_8);

SET_TIMER1(0);

ENABLE_INTERRUPTS(GLOBAL);

ENABLE_INTERRUPTS(INT_TIMER1);

WHILE(1)

}
#INCLUDE <TV_16F887.C>

UNSIGNED INT8 GIAY,DEM;

#INT_TIMER1

VOID INTERRUPT_TIMER1()

SET_TIMER1(3036);

DEM++

VOID HIENTHI()

OUTPUT_B(MA7DOAN[GIAY%10]); OUTPUT_LOW(PIN_D0);

DELAY_MS(1); OUTPUT_HIGH(PIN_D0);

OUTPUT_B(MA7DOAN[GIAY/10]); OUTPUT_LOW(PIN_D1);

DELAY_MS(1); OUTPUT_HIGH(PIN_D1);

VOID MAIN()

{
SET_TRIS_B (0X00); SET_TRIS_D (0X00);

SETUP_TIMER_1 (T1_INTERNAL | T1_DIV_BY_8);

SET_TIMER1(3036);

ENABLE_INTERRUPTS(GLOBAL); ENABLE_INTERRUPTS(INT_TIMER1);

GIAY=0; DEM=0;

IF (DEM>=10)

DEM=0;

IF (GIAY==59) GIAY=0;

ELSE GIAY++;

} ELSE HIENTHI();

#INCLUDE <TV_16F877.C>

#USE RS232 (BAUD=9600,XMIT=PIN_C6,RCV=PIN_C7)

UNSIGNED INT8 RDATA=0;


VOID MAIN()

SET_TRIS_D(0X00); OUTPUT_D(RDATA);

WHILE (1)

IF(KBHIT())

RDATA=GETCH();

OUTPUT_D(RDATA);

Code SPI: Master,slave:

Master:

#include <main.h>
#use spi(MASTER, DI = PIN_C4, DO = PIN_C5, CLK = PIN_C3, ENABLE = PIN_C2)

void main()
{
setup_spi(spi_master|spi_l_to_h|spi_clk_div_16);

while(TRUE)
{
spi_write('8');
delay_ms(500);
}

Slave:

#include <main.h>
#use spi(SLAVE, DI = PIN_C4, DO = PIN_C5, CLK = PIN_C3, ENABLE = PIN_C2)
#define LCD_ENABLE_PIN PIN_D2
#define LCD_RS_PIN PIN_D0
#define LCD_RW_PIN PIN_D1
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
#include <lcd.c>
char data_in=0;
void main()
{

lcd_init();
lcd_putc("hhehehe");
setup_spi(spi_slave|spi_l_to_h|spi_clk_div_16);
while(TRUE)
{

data_in = spi_read();
while(data_in!=0)
{
lcd_gotoxy(2,2);
lcd_putc(data_in);
delay_ms(100);
}

You might also like