مشکل حل شد!
کد برنامه بهصورت زیر هست:
کد:
/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.8 Standard
Automatic Program Generator
© Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 02/04/2014
Author : F4CG
Company : F4CG
Comments:
Chip type : ATmega32
Program type : Application
Clock frequency : 8.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 512
*****************************************************/
#include <mega32.h>
#include <delay.h>
#include <stdlib.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
#include <lcd.h>
// Declare your global variables here
void main(void)
{
unsigned char key=0,n=0,key1=0;
char str_key[9];
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// LCD module initialization
lcd_init(16);
while (1)
{
DDRC=0x0f;
PORTC=0xff;
while(PORTC==0xff){
PORTC=0xff;
PORTC.0=0;
if(PINC.4==0){
key=7;
goto l1;}
if(PINC.5==0){
key=8;
goto l1;}
if(PINC.6==0){
key=9;
goto l1;}
if(PINC.7==0){
key=10;
goto l1;}
delay_ms(5);
PORTC=0xff;
PORTC.1=0;
if(PINC.4==0){
key=4;
goto l1;}
if(PINC.5==0){
key=5;
goto l1;}
if(PINC.6==0){
key=6;
goto l1;}
if(PINC.7==0){
key=11;
goto l1;}
delay_ms(5);
PORTC=0xff;
PORTC.2=0;
if(PINC.4==0){
key=1;
goto l1;}
if(PINC.5==0){
key=2;
goto l1;}
if(PINC.6==0){
key=3;
goto l1;}
if(PINC.7==0){
key=12;
goto l1;}
delay_ms(5);
PORTC=0xff;
PORTC.3=0;
if(PINC.4==0){
key=13;
goto l1;}
if(PINC.5==0){
key=0;
goto l1;}
if(PINC.6==0){
key=14;
goto l1;}
if(PINC.7==0){
key=15;
goto l1;}
delay_ms(5);
PORTC=0xff;
}
l1: n++;
if(n==1){
key1=key;
}
if(n==2){
key=(key1*10)+key;
}
if(n>2){
lcd_clear();
key1=key;
n=1; }
itoa(key,str_key);
lcd_gotoxy(0,0);
lcd_puts(str_key);
while((PORTC&240)!=0xf0);
delay_ms(500);
};
}
لینک فایل پروتئوسش هم توی اولین پستم هست.
فقط یه چیزی که هست من خط آخر برنامه رو که همون delay هست رو همینجوری 500 انتخاب کردم.چه تابعی میشه بجاش گذاشت؟(لطفا بعد از شبیه سازی نتیجه رو اعلام کنید)
در ضمن حالا که برنامه جواب میده آیا میشه همینو به صورت یک فایل کتابخونه ای ذخیره کرد ؟ و هر وقت خواستیم فقط اسم اونو بنویسیم؟لطفا روش کار رو کامل بگید
با تشکر