سلام بر همه..
بنده نمونه کدی در کدویژن برای اسکن کیپد نوشتم اما در عملکرد دچار اختلال شد و با تغییر یک سطر این مشکل برطرف شد اما علتش رو نمیدونم و میخوام از دوستان بپرسم:
این نمونه کد برنامه هست که بصورت خلاصه نوشتم و بقیه برنامه رو پاک کردم..در اینجا متغیر عمومی A یک عدد رو از خوندن صفحه کلید میگیره...
اضافه شده در تاریخ :
حالا مشکل اینجاست که اگه عبارت DDRA=0x0f رو که با فلش مشخص شده نیارم این مشکل ایجاد میشه..درواقع با اینکه در ابتدای برنامه و قبل از حلقه while چهار پین اول پورت A رو خروجی کردم اما بعد از خلقه هم لازمه که اینکارو بکنم تا برنامه بدرستی اجرا بشه.درحالی که این کار قبلا و در ابتدای برنامه انجام شده...چرا؟
بنده نمونه کدی در کدویژن برای اسکن کیپد نوشتم اما در عملکرد دچار اختلال شد و با تغییر یک سطر این مشکل برطرف شد اما علتش رو نمیدونم و میخوام از دوستان بپرسم:
این نمونه کد برنامه هست که بصورت خلاصه نوشتم و بقیه برنامه رو پاک کردم..در اینجا متغیر عمومی A یک عدد رو از خوندن صفحه کلید میگیره...
کد:
#include <mega16a.h>
#include <delay.h>
#define c1 PINA.4
#define c2 PINA.5
#define c3 PINA.6
#define c4 PINA.7
flash unsigned char row[]={0b11111110,0b11111101,0b11111011,0b11110111};
unsigned char A ;
void main(){
unsigned char A1=0b10111111 , A2=0b10111111 , A3=0b10111111 ;
unsigned char r,ac;
DDRA=0x0f; <<<<<<<<<<<<<<<<<<<
while(1)
{
A=20;
for(r=0;r<4;r++){
ac=4;
PORTA=row[r];
DDRA=0x0f; <<<<<<<<<<<<<<<<<<<<
if(c1==0) ac=0;
if(c2==0) ac=1;
if(c3==0) ac=2;
if(c4==0) ac=3;
if(!(ac==4)){
A=(r*4)+ac;
while(c1==0);
while(c2==0);
while(c3==0);
while(c4==0);}
}
اضافه شده در تاریخ :
حالا مشکل اینجاست که اگه عبارت DDRA=0x0f رو که با فلش مشخص شده نیارم این مشکل ایجاد میشه..درواقع با اینکه در ابتدای برنامه و قبل از حلقه while چهار پین اول پورت A رو خروجی کردم اما بعد از خلقه هم لازمه که اینکارو بکنم تا برنامه بدرستی اجرا بشه.درحالی که این کار قبلا و در ابتدای برنامه انجام شده...چرا؟




دیدگاه