drexel
Üye
- Katılım
- 3 Eki 2009
- Mesajlar
- 22
- Puanları
- 1
- Yaş
- 39
Arkadaşlar hepinize merhaba!!!
4x4 Tuş takımından bir kimlik numarası alıp bu kimlik numarasını karakter lcd ekranda bastırmaya çalışıyorum. Aşağıda yazdığım ccs c kodu var nerede hata yaptığımı bir türlü bulamadım yardımcı olabilirseniz sevinirim.
4x4 Tuş takımından bir kimlik numarası alıp bu kimlik numarasını karakter lcd ekranda bastırmaya çalışıyorum. Aşağıda yazdığım ccs c kodu var nerede hata yaptığımı bir türlü bulamadım yardımcı olabilirseniz sevinirim.
Kod:
#include <18F4550.h>
#include <stdlib.h>
#fuses XT,NOWDT,PUT,BROWNOUT,NOLVP
#use delay(clock=4000000)
#include <flex_lcd.c>
#byte portb = 0xf81
#use fast_io(b)
int1 keyPressed=false;
char key='\0';
char idNo[5];
int no;
static int oldBState;
int i=0;
void getKey(void){
int pin, bState, delay = 10;
delay_ms(50);
disable_interrupts(INT_RB);
pin=4;
if (!bit_test(oldBState,pin)){
portb = 0xf1;
delay_us(delay);
bState = portb;
if (bit_test(bState,pin)) {
key = '1';
}
portb = 0xf2;
delay_us(delay);
bState = portb;
if (bit_test(bState,pin)) {
key = '2';
}
portb = 0xf4;
delay_us(delay);
bState = portb;
if (bit_test(bState,pin)) {
key = '3';
}
portb = 0xf8;
delay_us(delay);
bState = portb;
if (bit_test(bState,pin)) {
key = 'A';
}
}
pin=5;
if (!bit_test(oldBState,pin)){
portb = 0xf1;
delay_us(delay);
bState = portb;
if (bit_test(bState,pin)) {
key = '4';
}
portb = 0xf2;
delay_us(delay);
bState = portb;
if (bit_test(bState,pin)) {
key = '5';
}
portb = 0xf4;
delay_us(delay);
bState = portb;
if (bit_test(bState,pin)) {
key = '6';
}
portb = 0xf8;
delay_us(delay);
bState = portb;
if (bit_test(bState,pin)) {
key = 'B';
}
}
pin=6;
if (!bit_test(oldBState,pin)){
portb = 0xf1;
delay_us(delay);
bState = portb;
if (bit_test(bState,pin)) {
key = '7';
}
portb = 0xf2;
delay_us(delay);
bState = portb;
if (bit_test(bState,pin)) {
key = '8';
}
portb = 0xf4;
delay_us(delay);
bState = portb;
if (bit_test(bState,pin)) {
key = '9';
}
portb = 0xf8;
delay_us(delay);
bState = portb;
if (bit_test(bState,pin)) {
key = 'C';
}
}
pin=7;
if (!bit_test(oldBState,pin)){
portb = 0xf1;
delay_us(delay);
bState = portb;
if (bit_test(bState,pin)) {
key = '*';
}
portb = 0xf2;
delay_us(delay);
bState = portb;
if (bit_test(bState,pin)) {
key = '0';
}
portb = 0xf4;
delay_us(delay);
bState = portb;
if (bit_test(bState,pin)) {
key = '#';
}
portb = 0xf8;
delay_us(delay);
bState = portb;
if (bit_test(bState,pin)) {
key = 'D';
}
}
portb = oldBState;
enable_interrupts(INT_RB);
}
void printKey(void) {
if(key!='\0') {
lcd_gotoxy(1,1) ;
lcd_putc("\f");
printf(lcd_putc,"%c",key);
key = '\0';
}
if(i==4){
no=atoi(idNo);
lcd_gotoxy(1,1) ;
lcd_putc("\f");
printf(lcd_putc,"%i",no);
i=0;
}
}
#INT_RB
void RB_isr(VOID) {
if (oldBState != portb){
oldBState = portb;
keyPressed=true;
i++;
}
}
//===========================
void main(){
setup_adc_ports ( NO_ANALOGS ) ;
setup_adc ( ADC_OFF ) ;
setup_psp ( PSP_DISABLED ) ;
setup_spi ( FALSE ) ;
setup_timer_0 ( RTCC_INTERNAL | RTCC_OFF ) ;
setup_timer_1 ( T1_DISABLED ) ;
setup_timer_2 ( T2_DISABLED, 0, 1 ) ;
setup_timer_3 ( T3_DISABLED | T3_DIV_BY_1 ) ;
enable_interrupts ( INT_RB ) ;
enable_interrupts ( global ) ;
lcd_init ( ) ;
port_b_pullups(TRUE);
output_b(0xf0);
set_tris_b (0xf0); // B4 - 7 input B0 - 3 output
oldBState=portb;
lcd_gotoxy (1,1) ;
lcd_putc ( "Basliyor ..." ) ;
delay_ms ( 1000 ) ;
lcd_putc ( "\f" ) ;
WHILE ( TRUE ) {
if(keyPressed){
keyPressed=false;
getKey();
if((i<4) && (key!='\0')){
idNo[i]=key;
}
if(i==4){
idNo[i]=0x00;
}
printKey();
}
}
}