یه برناه کد ویژن دارم کلی روش زحمت کشیدم میکروی روی برنامه مگا32 هست میخوام به مگا 16 تبدیلش کنم اما نمیشه
راهی هست بدون اینکه برنامه رو از اول بنویسم تبدیل بنمایم؟
راهی هست بدون اینکه برنامه رو از اول بنویسم تبدیل بنمایم؟


(درس و مشق فعالیتمو تو انجمن کم کرده)/*******************************************************
This program was created by the
CodeWizardAVR V3.12 Advanced
Automatic Program Generator
© Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :digital oclock whit ds1307
Version :1.1
Date : 1/30/2015
Author :designed by saman asadi & mahdi zamani
Company :
Comments:eca.ir/forums
Chip type : ATmega32
Program type : Application
AVR Core Clock frequency: 8.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 512
*******************************************************/
#include <mega32.h>
#include <delay.h>
// I2C Bus functions
#include <i2c.h>
// DS1307 Real Time Clock functions
#include <ds1307.h>
#include <stdio.h>
// Alphanumeric LCD functions
#include <alcd.h>
//#define hezargan {PORTB.3=1;PORTB.0=0;}
//#define sadgan {PORTB.0=1;PORTB.1=0;}
//#define dahgan {PORTB.1=1;PORTB.2=0;}
//#define yekan {PORTB.2=1;PORTB.3=0;}
//#define res {PORTC =0xff;PORTB = PORTB & 0xF0;}
#define hezargan PORTB=0B0000001;
#define sadgan PORTB=0B0000010;
#define dahgan PORTB=0B0000100;
#define yekan PORTB=0B0001000;
#define res {PORTC =0xff;PORTB = PORTB & 0xF0;}
#define led PORTA.4
#define delay 100
#define delay1 10
unsigned char h=0,m=0,s=0,select=0,wile=0;
signed char yan=0,dan=0,san=0,han=0,zoj=0;
unsigned char common_anode[16]={192,249,164,176,153,146,130,248,128,144,160,131,198,161,134,142};
void main(void)
{
DDRA=(1<<DDA7) | (1<<DDA6) | (1<<DDA5) | (1<<DDA4) | (1<<DDA3) | (1<<DDA2) | (1<<DDA1) | (1<<DDA0);
// State: Bit7=0 Bit6=0 Bit5=0 Bit4=0 Bit3=0 Bit2=0 Bit1=0 Bit0=0
PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);
// Port B initialization
// Function: Bit7=Out Bit6=Out Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out
DDRB=(1<<DDB7) | (1<<DDB6) | (1<<DDB5) | (1<<DDB4) | (1<<DDB3) | (1<<DDB2) | (1<<DDB1) | (1<<DDB0);
// State: Bit7=0 Bit6=0 Bit5=0 Bit4=0 Bit3=0 Bit2=0 Bit1=0 Bit0=0
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
// Port C initialization
// Function: Bit7=Out Bit6=Out Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out
DDRC=(1<<DDC7) | (1<<DDC6) | (1<<DDC5) | (1<<DDC4) | (1<<DDC3) | (1<<DDC2) | (1<<DDC1) | (1<<DDC0);
// State: Bit7=0 Bit6=0 Bit5=0 Bit4=0 Bit3=0 Bit2=0 Bit1=0 Bit0=0
PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);
// Port D initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
// State: Bit7=P Bit6=P Bit5=P Bit4=P Bit3=P Bit2=P Bit1=T Bit0=T
PORTD=(1<<PORTD7) | (1<<PORTD6) | (1<<PORTD5) | (1<<PORTD4) | (1<<PORTD3) | (1<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
// Bit-Banged I2C Bus initialization
// I2C Port: PORTD
// I2C SDA bit: 1
// I2C SCL bit: 0
// Bit Rate: 100 kHz
// Note: I2C settings are specified in the
// Project|Configure|C Compiler|Libraries|I2C menu.
i2c_init();
// DS1307 Real Time Clock initialization
// Square wave output on pin SQW/OUT: Off
// SQW/OUT pin state: 0
rtc_init(0,0,0);
// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTA Bit 0
// RD - PORTA Bit 1
// EN - PORTA Bit 2
// D4 - PORTA Bit 4
// D5 - PORTA Bit 5
// D6 - PORTA Bit 6
// D7 - PORTA Bit 7
// Characters/line: 16
lcd_init(16);
rtc_set_time(12,12,12);
while (1)
{
rtc_get_time(&h,&m,&s);
//secend led _________________________________________________
if(s>=10)
{
zoj=s%10;
if(zoj==0||zoj==2||zoj==4||zoj==6||zoj==8) led=1;
if(zoj==1||zoj==3||zoj==5||zoj==7||zoj==9) led=0;
}
if(s<10)
{
zoj=s;
if(zoj==0||zoj==2||zoj==4||zoj==6||zoj==8) led=1;
if(zoj==1||zoj==3||zoj==5||zoj==7||zoj==9) led=0;
}
//secend led _________________________________________________
//menu _______________________________________________________
if(PIND.7==0)
{
select++;
if(select>4) select=0;
switch (select)
{
case 1:
wile=0;
while(wile==0)
{
while(PIND.7==0);
if(PIND.6==0)
{
while(PIND.6==0);
han++;
if(han>1) han=0;
if(san>2&&han==1)
{
PORTB=0B00001111;
PORTC = common_anode[14];
delay_ms(500);
han=0;
san=1;
}
}
hezargan;
PORTC = common_anode[han];
if(PIND.7==0)
{
while(PIND.7==0)
wile=1;
}
}
break;
case 2:
wile=0;
while(wile==0)
{
while(PIND.7==0);
if(PIND.6==0)
{
while(PIND.6==0);
san++;
switch (han)
{
case 1:if(san>2) san=0;
default:if(san>9) san=0;
}
}
sadgan;
PORTC = common_anode[san];
if(PIND.7==0)
{
while(PIND.7==0)
wile=1;
}
}
break;
case 3:
wile=0;
while(wile==0)
{
while(PIND.7==0);
if(PIND.6==0)
{
while(PIND.6==0);
dan++;
if(dan>5) dan=0;
}
dahgan;
PORTC = common_anode[dan];
if(PIND.7==0)
{
while(PIND.7==0)
wile=1;
}
}
break;
case 4:
wile=0;
while(wile==0)
{
while(PIND.7==0);
if(PIND.6==0)
{
while(PIND.6==0);
yan++;
if(yan>9) yan=0;
}
yekan;
PORTC = common_anode[yan];
if(PIND.7==0)
{
while(PIND.7==0)
wile=1;
}
}
break;
}
h=han*10+san;
m=dan*10+yan;
rtc_set_time(h,m,s);
}
//menu _______________________________________________________
//sec=0_______________________________________________________
if(PIND.6==0)
{
led =1;
while(PIND.6==0);
rtc_set_time(h,m,0);
PORTB=0B00000001;
PORTC = common_anode[15];
delay_ms(500);
}
//sec=0_______________________________________________________
han=h/10;
san=h%10;
dan=m/10;
yan=m%10;
//seg=========================================================================================
if(han!=0)
{
hezargan;
PORTC = common_anode[han];
delay_ms(delay1);
res;
}
sadgan;
PORTC = common_anode[san];
delay_ms(delay1);
res;
dahgan;
PORTC = common_anode[dan];
delay_ms(delay1);
res;
yekan;
PORTC = common_anode[yan];
delay_ms(delay1);
res;
//seg=======================================================================================
// if(select!=0)
// {
// PORTB=0;
// delay_ms(200);
// }
};
};
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3 Standard
Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 04/03/2015
Author : clinic_pc
Company :
Comments:
Chip type : ATmega16A
Program type : Application
AVR Core Clock frequency: 8/000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
#include <mega16a.h>
#include <i2c.h>
#include <delay.h>
#include <stdio.h>
#include <ds1307.h>
#include <alcd.h>
//#define hezargan {PORTB.3=1;PORTB.0=0;}
//#define sadgan {PORTB.0=1;PORTB.1=0;}
//#define dahgan {PORTB.1=1;PORTB.2=0;}
//#define yekan {PORTB.2=1;PORTB.3=0;}
//#define res {PORTC =0xff;PORTB = PORTB & 0xF0;}
#define hezargan PORTB=0B0000001;
#define sadgan PORTB=0B0000010;
#define dahgan PORTB=0B0000100;
#define yekan PORTB=0B0001000;
#define res {PORTC =0xff;PORTB = PORTB & 0xF0;}
#define led PORTA.4
#define delay 100
#define delay1 10
unsigned char h=0,m=0,s=0,select=0,wile=0;
signed char yan=0,dan=0,san=0,han=0,zoj=0;
unsigned char common_anode[16]={192,249,164,176,153,146,130,248,128,144,160,131,198,161,134,142};
void main(void){
{
// Declare your local variables here
DDRA=(1<<DDA7) | (1<<DDA6) | (1<<DDA5) | (1<<DDA4) | (1<<DDA3) | (1<<DDA2) | (1<<DDA1) | (1<<DDA0);
// State: Bit7=0 Bit6=0 Bit5=0 Bit4=0 Bit3=0 Bit2=0 Bit1=0 Bit0=0
PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);
// Port B initialization
// Function: Bit7=Out Bit6=Out Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out
DDRB=(1<<DDB7) | (1<<DDB6) | (1<<DDB5) | (1<<DDB4) | (1<<DDB3) | (1<<DDB2) | (1<<DDB1) | (1<<DDB0);
// State: Bit7=0 Bit6=0 Bit5=0 Bit4=0 Bit3=0 Bit2=0 Bit1=0 Bit0=0
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
// Port C initialization
// Function: Bit7=Out Bit6=Out Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out
DDRC=(1<<DDC7) | (1<<DDC6) | (1<<DDC5) | (1<<DDC4) | (1<<DDC3) | (1<<DDC2) | (1<<DDC1) | (1<<DDC0);
// State: Bit7=0 Bit6=0 Bit5=0 Bit4=0 Bit3=0 Bit2=0 Bit1=0 Bit0=0
PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);
// Port D initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
// State: Bit7=P Bit6=P Bit5=P Bit4=P Bit3=P Bit2=P Bit1=T Bit0=T
PORTD=(1<<PORTD7) | (1<<PORTD6) | (1<<PORTD5) | (1<<PORTD4) | (1<<PORTD3) | (1<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
// I2C Bus initialization
// I2C Port: PORTD
// I2C SDA bit: 1
// I2C SCL bit: 0
// Bit Rate: 100 kHz
// Note: I2C settings are specified in the
// Project|Configure|C Compiler|Libraries|I2C menu.
i2c_init();
// DS1307 Real Time Clock initialization
// Square wave output on pin SQW/OUT: Off
// SQW/OUT pin state: 0
rtc_init(0,0,0);
// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTA Bit 0
// RD - PORTA Bit 1
// EN - PORTA Bit 2
// D4 - PORTA Bit 4
// D5 - PORTA Bit 5
// D6 - PORTA Bit 6
// D7 - PORTA Bit 7
// Characters/line: 16
lcd_init(16);
}
rtc_set_time(12,12,12);
while (1)
{
rtc_get_time(&h,&m,&s);
//secend led _________________________________________________
if(s>=10)
{
zoj=s%10;
if(zoj==0||zoj==2||zoj==4||zoj==6||zoj==8) led=1;
if(zoj==1||zoj==3||zoj==5||zoj==7||zoj==9) led=0;
}
if(s<10)
{
zoj=s;
if(zoj==0||zoj==2||zoj==4||zoj==6||zoj==8) led=1;
if(zoj==1||zoj==3||zoj==5||zoj==7||zoj==9) led=0;
}
//secend led _________________________________________________
//menu _______________________________________________________
if(PIND.7==0)
{
select++;
if(select>4) select=0;
switch (select)
{
case 1:
wile=0;
while(wile==0)
{
while(PIND.7==0);
if(PIND.6==0)
{
while(PIND.6==0);
han++;
if(han>1) han=0;
if(san>2&&han==1)
{
PORTB=0B00001111;
PORTC = common_anode[14];
delay_ms(500);
han=0;
san=1;
}
}
hezargan;
PORTC = common_anode[han];
if(PIND.7==0)
{
while(PIND.7==0)
wile=1;
}
}
break;
case 2:
wile=0;
while(wile==0)
{
while(PIND.7==0);
if(PIND.6==0)
{
while(PIND.6==0);
san++;
switch (han)
{
case 1:if(san>2) san=0;
default:if(san>9) san=0;
}
}
sadgan;
PORTC = common_anode[san];
if(PIND.7==0)
{
while(PIND.7==0)
wile=1;
}
}
break;
case 3:
wile=0;
while(wile==0)
{
while(PIND.7==0);
if(PIND.6==0)
{
while(PIND.6==0);
dan++;
if(dan>5) dan=0;
}
dahgan;
PORTC = common_anode[dan];
if(PIND.7==0)
{
while(PIND.7==0)
wile=1;
}
}
break;
case 4:
wile=0;
while(wile==0)
{
while(PIND.7==0);
if(PIND.6==0)
{
while(PIND.6==0);
yan++;
if(yan>9) yan=0;
}
yekan;
PORTC = common_anode[yan];
if(PIND.7==0)
{
while(PIND.7==0)
wile=1;
}
}
break;
}
h=han*10+san;
m=dan*10+yan;
rtc_set_time(h,m,s);
}
//menu _______________________________________________________
//sec=0_______________________________________________________
if(PIND.6==0)
{
led =1;
while(PIND.6==0);
rtc_set_time(h,m,0);
PORTB=0B00000001;
PORTC = common_anode[15];
delay_ms(500);
}
//sec=0_______________________________________________________
han=h/10;
san=h%10;
dan=m/10;
yan=m%10;
//seg=========================================================================================
if(han!=0)
{
hezargan;
PORTC = common_anode[han];
delay_ms(delay1);
res;
}
sadgan;
PORTC = common_anode[san];
delay_ms(delay1);
res;
dahgan;
PORTC = common_anode[dan];
delay_ms(delay1);
res;
yekan;
PORTC = common_anode[yan];
delay_ms(delay1);
res;
//seg=======================================================================================
// if(select!=0)
// {
// PORTB=0;
// delay_ms(200);
// }
}
}[left][/left]
دیدگاه