Btap 1
Btap 1
H>
#FUSES XT
#USE DELAY(CLOCK=20M)
#USE PWM(CCP2, OUTPUT=PIN_C1,TIMER=2, FREQUENCY=250)
#DEFINE LCD_ENABLE_PIN PIN_A3
#DEFINE LCD_RW_PIN PIN_A2
#DEFINE LCD_RS_PIN PIN_A1
#DEFINE LCD_DATA4 PIN_D4
#DEFINE LCD_DATA5 PIN_D5
#DEFINE LCD_DATA6 PIN_D6
#DEFINE LCD_DATA7 PIN_D7
#INCLUDE <LCD.C>
CHAR SOPHIM=0;
INT8 SLN=0;
int8 i=0;
int8 j=0;
int8 A;
#BYTE PORTD=0X08
#BYTE PORTC=0X07
#BYTE PORTB=0X06
void led (A){
PWM_SET_DUTY_PERCENT(A);
}
VOID quetphim()
{
WHILE(TRUE)
{
OUTPUT_C(0B11101111);
IF(INPUT(PIN_C0)==0){DELAY_MS(50);WHILE(INPUT(PIN_C0)==0);SOPHIM=10;break;}
IF(INPUT(PIN_C1)==0){DELAY_MS(50);WHILE(INPUT(PIN_C1)==0);SOPHIM=3;break;}
IF(INPUT(PIN_C2)==0){DELAY_MS(50);WHILE(INPUT(PIN_C2)==0);SOPHIM=2;break;}
IF(INPUT(PIN_C3)==0){DELAY_MS(50);WHILE(INPUT(PIN_C3)==0);SOPHIM=1;break;}
OUTPUT_C(0B11011111);
IF(INPUT(PIN_C0)==0){DELAY_MS(50);WHILE(INPUT(PIN_C0)==0);SOPHIM=11;break;}
IF(INPUT(PIN_C1)==0){DELAY_MS(50);WHILE(INPUT(PIN_C1)==0);SOPHIM=6;BReak;}
IF(INPUT(PIN_C2)==0){DELAY_MS(50);WHILE(INPUT(PIN_C2)==0);SOPHIM=5;Break;}
IF(INPUT(PIN_C3)==0){DELAY_MS(50);WHILE(INPUT(PIN_C3)==0);SOPHIM=4;Break;}
OUTPUT_C(0B10111111);
IF(INPUT(PIN_C0)==0){DELAY_MS(50);WHILE(INPUT(PIN_C0)==0);SOPHIM=12;BReak;}
IF(INPUT(PIN_C1)==0){DELAY_MS(50);WHILE(INPUT(PIN_C1)==0);SOPHIM=9;Break;}
IF(INPUT(PIN_C2)==0){DELAY_MS(50);WHILE(INPUT(PIN_C2)==0);SOPHIM=8;Break;}
IF(INPUT(PIN_C3)==0){DELAY_MS(50);WHILE(INPUT(PIN_C3)==0);SOPHIM=7;Break;}
OUTPUT_C(0B01111111);
IF(INPUT(PIN_C0)==0){DELAY_MS(50);WHILE(INPUT(PIN_C0)==0);SOPHIM=13;Break;}
IF(INPUT(PIN_C1)==0){DELAY_MS(50);WHILE(INPUT(PIN_C1)==0);LCD_GOTOXY(j-
i,2);lcd_putc(" ");SOPHIM=23;SLN-=2;i++;Break;}
IF(INPUT(PIN_C2)==0){DELAY_MS(50);WHILE(INPUT(PIN_C2)==0);SOPHIM=0;BReak;}
IF(INPUT(PIN_C3)==0){DELAY_MS(50);WHILE(INPUT(PIN_C3)==0); }
}
}
VOID MAIN()
{
SET_TRIS_D(0X00);
SET_TRIS_B(0X00);
SET_TRIS_C(0B11110000);
LCD_INIT();
OUTPUT_B(0X00);
LAP:
LCD_GOTOXY(3,1);
LCD_PUTC("VU ANH TUAN");
LCD_GOTOXY(2,2);
PRINTF(LCD_PUTC,"SO PHIM=");
IF(SOPHIM<20){
IF(SLN==1){
i=0;
LCD_GOTOXY(10,2); j=10;
IF(SOPHIM<10)
{
PRINTF(LCD_PUTC,"%D",SOPHIM);
}
IF(SLN==2)
{
LCD_GOTOXY(11,2); j=11;
IF(SOPHIM<10)
{
PRINTF(LCD_PUTC,"%D",SOPHIM);
}
IF(SLN==3)
{
LCD_GOTOXY(12,2); j=12;
IF(SOPHIM<10)
{
PRINTF(LCD_PUTC,"%D",SOPHIM);
}
IF(SLN==4)
{
LCD_GOTOXY(13,2); j=13;
IF(SOPHIM<10)
{
PRINTF(LCD_PUTC,"%D",SOPHIM);
}
LCD_GOTOXY(13,2); j=13;
IF(SOPHIM<10)
{
PRINTF(LCD_PUTC,"%D",SOPHIM);
}
}
}
quetphim();
SLN++;
IF(SLN>4){SLN=1;}
GOTO LAP;