[INDENT][INDENT][INDENT]بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته تحية طيبة وبعد:
أرجو تحويل هذا البرنامج المكتوب ب code vision
من لغة ال c إلى hex
وإليكم البرنامج كما يأتي:
Chip type : ATmega16
Program type : Application
Clock frequency : 1.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
البرنامج يبدأ من هنا
#include <mega16.h>
#include <delay.h>
unsigned int T = 2000;
unsigned int X = 2000;
unsigned int counter = 0;
//bit f_g=1;
bit response=0;
unsigned int F_value = 0;
int w=0;
//unsigned int dB_value = 0;
/*interrupt [EXT_INT2] void ext_int2_isr(void)
{
// Place your code here
PORTC.3=0;
response=1;
T=1000;
}*/
// Timer 1 overflow interrupt service rouƟne
interrupt [TIM1_OVF] void Ɵmer1_ovf_isr(void)
{
// ReiniƟalize Timer 1 value
ICR1H = T>>8;
ICR1L = T;
OCR1A = X;
OCR1B = X;
counter++;
// Place your code here
}
// Declare your global variables here
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
#define row0 PINA.0
#define row1 PINA.1
#define row2 PINA.2
#define row3 PINA.3
#define col0 PORTA.4
#define col1 PORTA.5
#define col2 PORTA.6
#define col3 PORTA.7
#define a PORTB.6
#define b PORTB.5
#define c PORTB.4
#define en1 PORTB.3
#define en2 PORTB.2
//char* s=" gg ";
//flash char* SF=" ";
//flash char* SG=" ";
// Declare your global variables here
//bit go=0;
//int value;
unsigned char i;
unsigned char j;
char h;
char mat[4][4];
int data;
bit p=0;
bit m=0;
char z=0;
bit y=0;
//bit f=0;
//bit d=0;
void read()
{
j=10;
i=10;
for(h=0;h<4;h++)
{
switch(h)
{
case 0: col0=0; col1=1; col2=1; col3=1; break;
case 1: col0=1; col1=0; col2=1; col3=1; break;
case 2: col0=1; col1=1; col2=0; col3=1; break;
case 3: col0=1; col1=1; col2=1; col3=0; break;
}
if(!row0) {j=h; i=0;}
if(!row1) {j=h; i=1;}
if(!row2) {j=h; i=2;}
if(!row3) {j=h; i=3;}
}
if(m==0)
{
if(j!=10)
{
data=mat[i][j];
w=0;
y=1;
PORTB.1=0;
p=1;
}
m=1;
}
if(j==10)
m=0;
}
void show()
{
if(p==1)
{
// lcd_putchar(data);
p=0;
//y=1;
}
}
void get()
{
/* switch(data)
{
case '=': f_g=1; break;
case '+': f_g=0; break;
case 'c': lcd_clear(); break;
} */
// if(f_g)
// {
// PORTD.0=1; // iniƟate the frequancy
// PORTD.1=0;
switch(data)
{
//case '+': T=50;PORTD.0=1;PORTD.1=0; break; //20 KHz
case '1': T=100;PORTD.0=1;PORTD.1=0;
if(y==1)
{for(z=10;z<16;z++){lcd_gotoxy(z,0 );lcd_putchar(' ');}
lcd_gotoxy(10,0);lcd_putsf("10kHz" );y=0;} break; //10 KHz
case '2': T=125;PORTD.0=1;PORTD.1=0;
if(y==1)
{for(z=10;z<16;z++){lcd_gotoxy(z,0 );lcd_putchar(' ');}
lcd_gotoxy(10,0);lcd_putsf("8 kHz" );y=0;} break; //8 KHz
case '3': T=250;PORTD.0=1;PORTD.1=0;
if(y==1)
{for(z=10;z<16;z++){lcd_gotoxy(z,0 );lcd_putchar(' ');}
lcd_gotoxy(10,0);lcd_putsf("4 kHz" );y=0;} break; //4 KHz
case '‐': T=500;PORTD.0=1;PORTD.1=0;
if(y==1)
{for(z=10;z<16;z++){lcd_gotoxy(z,0 );lcd_putchar(' ');}
lcd_gotoxy(10,0);lcd_putsf("2 kHz" );y=0;} break; //2 KHz
case 'c': T=1000;PORTD.0=1;PORTD.1=0;
if(y==1)
{for(z=10;z<16;z++){lcd_gotoxy(z,0 );lcd_putchar(' ');}
lcd_gotoxy(10,0);lcd_putsf("1 kHz" );y=0;} break; //1 KHz
case '0': T=2000;PORTD.0=1;PORTD.1=0;
if(y==1)
{for(z=10;z<16;z++){lcd_gotoxy(z,0 );lcd_putchar(' ');}
lcd_gotoxy(10,0);lcd_putsf("500Hz" );y=0;} break; //500 Hz
case '=': T=4000;PORTD.0=1;PORTD.1=0;
if(y==1)
{for(z=10;z<16;z++){lcd_gotoxy(z,0 );lcd_putchar(' ');}
lcd_gotoxy(10,0);lcd_putsf("250Hz");y=0;} break; //250 Hz
case '+': T=8000;PORTD.0=1;PORTD.1=0;
if(y==1)
{for(z=10;z<16;z++){lcd_gotoxy(z,0 );lcd_putchar(' ');}
lcd_gotoxy(10,0);lcd_putsf("125Hz" );y=0;} break; //125 Hz
}
// }
// if(!f_g)
// {
// PORTD.1=1; // iniƟate the dB
// PORTD.0=0;
switch(data)
{
case '*': en1=0;en2=0;a=0;b=0;c=1;PORTD.1= 1;PORTD.0=0;
if(y==1)
{for(z=10;z<16;z++){lcd_gotoxy(z,1 );lcd_putchar(' ');}
lcd_gotoxy(10,1);lcd_putsf("10 dB" );y=0;} break;
case '6': en1=0;en2=0;a=1;b=1;c=0;PORTD.1= 1;PORTD.0=0;
if(y==1)
{for(z=10;z<16;z++){lcd_gotoxy(z,1 );lcd_putchar(' ');}
lcd_gotoxy(10,1);lcd_putsf("20 dB" );y=0;} break;
case '5': en1=0;en2=0;a=1;b=0;c=1;PORTD.1= 1;PORTD.0=0;
if(y==1)
{for(z=10;z<16;z++){lcd_gotoxy(z,1 );lcd_putchar(' ');}
lcd_gotoxy(10,1);lcd_putsf("30 dB" );y=0;} break;
case '4': en1=0;en2=0;a=0;b=1;c=0;PORTD.1= 1;PORTD.0=0;
f(y==1)
{for(z=10;z<16;z++){lcd_gotoxy(z,1 );lcd_putchar(' ');}
lcd_gotoxy(10,1);lcd_putsf("40 dB" );y=0;} break;
case '/': en1=0;en2=0;a=0;b=0;c=0;PORTD.1=1;PORTD.0=0;
if(y==1)
{for(z=10;z<16;z++){lcd_gotoxy(z,1 );lcd_putchar(' ');}
lcd_gotoxy(10,1);lcd_putsf("50 dB" );y=0;} break;
case '9': en1=0;en2=0;a=1;b=0;c=0;PORTD.1= 1;PORTD.0=0;en1=0;
if(y==1)
{for(z=10;z<16;z++){lcd_gotoxy(z,1 );lcd_putchar(' ');}
lcd_gotoxy(10,1);lcd_putsf("60 dB" );y=0;} break;
case '8': en1=0;en2=0;a=1;b=1;c=1;PORTD.1= 1;PORTD.0=0;
if(y==1)
{for(z=10;z<16;z++){lcd_gotoxy(z,1 );lcd_putchar(' ');}
lcd_gotoxy(10,1);lcd_putsf("70 dB" );y=0;} break;
case '7': en1=0;en2=0;a=0;b=1;c=1;PORTD.1= 1;PORTD.0=0;
if(y==1)
{for(z=10;z<16;z++){lcd_gotoxy(z,1 );lcd_putchar(' ');}
lcd_gotoxy(10,1);lcd_putsf("80 dB" );y=0;} break;
//case '8': en1=0;en2=1;a=1;b=1;c=1;PORTD.1=1;PORTD. 0=0; break;
//case '9': en1=0;en2=1;a=0;b=1;c=0;PORTD.1=1;PORTD. 0=0; break;
}
// }
}
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=In Func2=In Func1=In
Func0=In
// State7=1 State6=1 State5=1 State4=1 State3=P Stat e2=P State1=P State0=P
PORTA=0xFF;
DDRA=0xF0;
// Port B initialization
// Func7=In Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out
Func0=In
// State7=T State6=0 State5=0 State4=0 State3=0 Stat e2=0 State1=0 State0=P
PORTB=0x01;
DDRB=0x7E;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=Out Fun c2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=0 Stat e2=T State1=T State0=T
PORTC=0x00;
DDRC=0x08;
// Port D initialization
// Func7=In Func6=In Func5=Out Func4=Out Func3=In Fu nc2=In Func1=In Func0=In
// State7=T State6=T State5=0 State4=0 State3=T Stat e2=T State1=T State0=T
PORTD=0x00;
DDRD=0x33;
// Timer/Counter 0 iniƟalizaƟon
// 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 iniƟalizaƟon
// Clock source: System Clock
// Clock value: 1000.000 kHz
// Mode: Fast PWM top=ICR1
// OC1A output: Non‐Inv.
// OC1B output: Inverted
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: On
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xB2;
TCCR1B=0x19;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 iniƟalizaƟon
// 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=0x04;
// 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);
mat[0][0]='/';
mat[1][0]='*';
mat[2][0]='‐';
mat[3][0]='+';
mat[0][1]='9';
mat[1][1]='6';
mat[2][1]='3';
mat[3][1]='=';
mat[0][2]='8';
mat[1][2]='5';
mat[2][2]='2';
mat[3][2]='0';
mat[0][3]='7';
mat[1][3]='4';
mat[2][3]='1';
mat[3][3]='c';
// Global enable interrupts
#asm("sei")
lcd_putsf("this project is made by :");
delay_ms(3000);
lcd_clear();
lcd_putsf("N.M.D & GH.H & M.KH");
delay_ms(5000);
lcd_clear();
lcd_putsf("Supervised by : ENG M.H");
delay_ms(2000);
lcd_clear();
lcd_putsf("frequ_val= off");
lcd_gotoxy(0,1);
lcd_putsf("dBell_val= off");
while (1)
{
//lcd_putsf("nader");
read();
show();
get();
if(w!=1)
{
if ( counter >= 1 )
{
counter = 0;
X=T/2;
X %= T;
}
}
if(PINB.0==0)
{
PORTB.1=1;
PORTD.5=0;
response=1;
F_value=T;
w=1;
}
};
}
ملاحظة :هل يجب تحديد المداخل و المخارج عند التحويل إلى ملف ال hex
[IMG]

[/IMG]
وإذا كان يجب ذلك فإليكم الصورة التي توضح الدارة أي المداخل والمخارج للمتحكم
وهل يجب تحديد البورت المناسب لل lcd
أرجو الرد السريع ولكم جزيل الشكر