Đếm sản phẩm dùng ngắt PORTB



/*
 * File:   interPortB.c
 * Author: PhanHoangThinh
 *
 * Created on Ngày 06 tháng 7 n?m 2017, 20:35
 */


#include <xc.h>
#include <stdio.h>
#include <stdlib.h>
#include "lcd.h"
#define _XTAL_FREQ 4000000
// CONFIG1
#pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator: High-speed crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled and can be enabled by SWDTEN bit of the WDTCON register)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = ON       // RE3/MCLR pin function select bit (RE3/MCLR pin function is MCLR)
#pragma config CP = OFF         // Code Protection bit (Program memory code protection is disabled)
#pragma config CPD = OFF        // Data Code Protection bit (Data memory code protection is disabled)
#pragma config BOREN = OFF      // Brown Out Reset Selection bits (BOR disabled)
#pragma config IESO = OFF       // Internal External Switchover bit (Internal/External Switchover mode is disabled)
#pragma config FCMEN = OFF      // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is disabled)
#pragma config LVP = OFF        // Low Voltage Programming Enable bit (RB3 pin has digital I/O, HV on MCLR must be used for programming)

// CONFIG2
#pragma config BOR4V = BOR40V   // Brown-out Reset Selection bit (Brown-out Reset set to 4.0V)
#pragma config WRT = OFF        // Flash Program Memory Self Write Enable bits (Write protection off)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.
unsigned char dem1=0;
unsigned char dem2=0;
unsigned char dem3=0;
int lol=0;
void main(void) {
   
    ANSEL=0;
    ANSELH=0;
   
    TRISBbits.TRISB0=1;
    TRISBbits.TRISB1=1;
    TRISBbits.TRISB2=1;
   
    nRBPU=0;
    WPUB=0x07;
    RBIF=0;GIE=1;RBIE=1;
    INTEDG=1;
    IOCB=0x07;
    PORTB;
    lcd_init();
   
    lcd_gotoxy(2,0);
    printf("S1");
    lcd_gotoxy(2,1);
    printf("%02d",dem1);
    lcd_gotoxy(7,0);
    printf("S2");
    lcd_gotoxy(7,1);
    printf("%02d",dem2);
    lcd_gotoxy(12,0);
    printf("S3");
    lcd_gotoxy(12,1);
    printf("%02d",dem3);
    while(1)
    {
       
    }      
}

void interrupt NgatPortB()
{
    PORTB;
    RBIF=0;
        if(PORTBbits.RB0==1)
        {
            dem1++;
            lcd_gotoxy(2,1);
            printf("%02d",dem1);
            if(dem1==99) dem1=0;
        }
       
        if(PORTBbits.RB1==1)
        {
            dem2++;
            lcd_gotoxy(7,1);
            printf("%02d",dem2);
            if(dem2==99) dem2=0;
        }
        if(PORTBbits.RB2==1)
        {
            dem3++;
            lcd_gotoxy(12,1);
            printf("%02d",dem3);
            if(dem3==99) dem3=0;
        }
}

Previous
Next Post »