我試圖製作一個智能家庭自動化設備,當你進入房間時燈會自動打開,反之亦然,我用我的項目兩個激光來指定人們是進入還是離開房間還希望圖片來統計有多少人進入房間,並在最後一個進入房間後關掉燈離開做這個我用pic16f877a ic和mplab作爲我的IDE與xc8編譯器,到目前爲止該程序工作如此之好,但它不計算進入房間的人,但只有在離開後才關燈,這不是很酷,我真的不知道問題出在哪裏,我的代碼看起來沒問題。這裏是代碼:Mplab圖片程序不能正常工作
/*
* File: main.c
* Author: Fady
*
* Created on September 23, 2014, 9:56 PM
*/
#include <stdio.h>
#include <stdlib.h>
/*
*
*/
// PIC16F877A Configuration Bit Settings
// 'C' source line config statements
#include <xc.h>
// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.
// CONFIG
#pragma config FOSC = XT // Oscillator Selection bits (XT oscillator)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = ON // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3/PGM pin has PGM function; low-voltage programming enabled)
#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)
#define _XTAL_FREQ 4000000
#define laser1 PORTBbits.RB0
#define laser2 PORTBbits.RB1
#define isOn ==0
#define isOff ==1
int x1 = 0;
int x2 = 0;
int main() {
char people = 0;
nRBPU = 0;
TRISBbits.TRISB0 = 1; //laser 1 for input
TRISBbits.TRISB0 = 1; //laser 2 for input
TRISCbits.TRISC0 = 0; //output LED for output
PORTCbits.RC0 = 0;
while(1){
beginning:
if((laser1 isOn && laser2 isOn) || (laser1 isOff && laser2 isOff)){ //if both lasers are on
goto beginning;
}else if(laser1 isOff && laser2 isOn){ //if laser1 is off and laser2 is on
readO:
if(laser2 isOff){
if(people == 0){
people = 1;
PORTCbits.RC0 = 1;
}if(people >= 1){
people++;
}
}else{
for(; x2 <= 1000; x2++){
__delay_ms(1);
goto readO;
}
}
x2 = 0;
}else if(laser1 isOn && laser2 isOff){ //if laser1 is on and laser2 is off
readC:
if(laser1 isOff){
people--;
if(people == 0){
PORTCbits.RC0 = 0;
}
}else{
for(; x1 <= 1000; x1++){
__delay_ms(1);
goto readC;
}
}
x1 = 0;
}
}
}
我認爲這沒有問題,但我不知道什麼是錯在這裏反正在此先感謝誰是要去解決任何回答者這一點,真的會爲我
是的,直到任何人決定切割激光線然後它檢查是否是它的第一或第二將其切斷以指定是否進入或離開房間的人 – ilouy 2014-10-03 03:43:03
它不算人進入房間或出來 – ilouy 2014-10-03 03:47:00