سلام دوستان
میشه کمکم کنید شدیدا نیاز دارم...
من این برنامه رو نوشتم که اگر بعد ده ثانیه یا کلید # زده شد حلقه را بشکند و به صفحه اصلی بیاید ولی کار نمی کند مشکل کجاست؟
[code=c]
#include <mega16.h>
#include <stdio.h>
#include <delay.h>
#include <lcd.h>
#define xtal 8000000
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
#define c1 PINB.4
#define c2 PINB.5
#define c3 PINB.6
#define c4 PINB.7
unsigned char buffer[32];
int i;
unsigned char scan[4]={0XFE,0XFD,0XFB,0XF7};
unsigned char arrkey[16]={
1,2,3,15,
4,5,6,14,
7,8,9,13,
10,0,11,12};
unsigned char key;
unsigned char keypad(unsigned char wait){
unsigned char r,c,k=0;
unsigned int i,l;
DDRB=0X0F;
PORTB=0XFF;
l=(wait*1000)+1000;
for (i=0; i<l; i++){
for (r=0; r<4; r++){
c=4;
PORTB=scan[r];
delay_us(10);
if(c1==0) c=0;
if(c2==0) c=1;
if(c3==0) c=2;
if(c4==0) c=3;
if (!(c==4)){
k=arrkey[(r*4)+c];
while(c1==0);
while(c2==0);
while(c3==0);
while(c4==0);
delay_ms(100);
return k;
}
}
delay_ms(1);
}
k=100;
return k;
}
void check_pass(){
lcd_clear();
lcd_putsf("in : "
;
for (i=0; i<10; i++){
key = keypad(10);
if(key==100 || key==11) break;
sprintf(buffer,"%d",key);
lcd_puts(buffer);
delay_ms(10);
}
}
void main(void){
lcd_init(16);
DDRD=0xff;
PORTD=0;
TCNT0=0x00;
OCR0=0x00;
lcd_clear();
lcd_putsf("0=check password"
;
while (1){
key=keypad(10);
if (key==0) check_pass();
}
}
[/code]
میشه کمکم کنید شدیدا نیاز دارم...
من این برنامه رو نوشتم که اگر بعد ده ثانیه یا کلید # زده شد حلقه را بشکند و به صفحه اصلی بیاید ولی کار نمی کند مشکل کجاست؟
[code=c]
#include <mega16.h>
#include <stdio.h>
#include <delay.h>
#include <lcd.h>
#define xtal 8000000
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
#define c1 PINB.4
#define c2 PINB.5
#define c3 PINB.6
#define c4 PINB.7
unsigned char buffer[32];
int i;
unsigned char scan[4]={0XFE,0XFD,0XFB,0XF7};
unsigned char arrkey[16]={
1,2,3,15,
4,5,6,14,
7,8,9,13,
10,0,11,12};
unsigned char key;
unsigned char keypad(unsigned char wait){
unsigned char r,c,k=0;
unsigned int i,l;
DDRB=0X0F;
PORTB=0XFF;
l=(wait*1000)+1000;
for (i=0; i<l; i++){
for (r=0; r<4; r++){
c=4;
PORTB=scan[r];
delay_us(10);
if(c1==0) c=0;
if(c2==0) c=1;
if(c3==0) c=2;
if(c4==0) c=3;
if (!(c==4)){
k=arrkey[(r*4)+c];
while(c1==0);
while(c2==0);
while(c3==0);
while(c4==0);
delay_ms(100);
return k;
}
}
delay_ms(1);
}
k=100;
return k;
}
void check_pass(){
lcd_clear();
lcd_putsf("in : "

for (i=0; i<10; i++){
key = keypad(10);
if(key==100 || key==11) break;
sprintf(buffer,"%d",key);
lcd_puts(buffer);
delay_ms(10);
}
}
void main(void){
lcd_init(16);
DDRD=0xff;
PORTD=0;
TCNT0=0x00;
OCR0=0x00;
lcd_clear();
lcd_putsf("0=check password"

while (1){
key=keypad(10);
if (key==0) check_pass();
}
}
[/code]
دیدگاه