با سلام خدمت همه بروبچ
مناین برنامه را نوشتم واین خطش temp=0x70; را error می گیره در ستم نوشته ولی نمدونم چرا؟
در ضمن این یه برنامه ای که یه کی بورد تلفنی 3*4 را اسکن می کنه وروی lcdنمایش میده
#include <mega16.h>
#include <stdio.h>
#include <delay.h>
#asm
.equ_lcd_port=0X1B
#endasm
#include <lcd.h>
unsigned char scan_key(void);
unsigned char code [3][4]={{1,4,7,11},{2,5,8,0},{3,6,9,12}};
char buffer_lcd[10];
void main (void)
{
unsigned char key;
PORTC=0x00;
DDRC=0xf0;
lcd_init(16);
lcd_clear();
while(1){
key=scan_key();
if(key!=0xff){
lcd_clear();
lcd_gotoxy(0,0);
sprintf(buffer_lcd,"key=%d",key);
lcd_puts(buffer_lcd);
}
}
}
//******************************
unsigned char scan_key(void)
{
unsigned char i,data,num_key,temp;
num_key=0xff
temp=0x70;
for(i=0;i<3;i++){
PORTC=temp;
delay_ms(5);
data=PINC &0x0f;
if(data==0x07)
num_key=code[0][i];
if(data==0x0B)
num_key=code[1][i];
if(data==0x0D)
num_key=code[2][i];
temp=((temp>>=1) | 0X80 ) & 0XF0;
}
return num_key;
}[hr]
یه سوال دیگه این برنامه را نوشتم ولی در پروتئوس جواب نمی ده .میخواستم بدونم برنامه را درست نوشتم یا نه؟
باتشکر
یا علی
$regfile = "m16def.dat"
$crystal = 8000000
Config Lcdpin = Pin Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6_
, Db7 = Porta.7 , E = Porta.2 , Rs = Porta.3
Config Lcd = 16 * 2
Dim A As Byte
Do
Locate 1 , 5
Lcd "22 KHORDAD"
Waitms 500
For A = 1 To 20
Shiftlcd Right
Waitms 100
Next
Cls
Loop
End