قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

abdo alsawi
:: مهندس ::
تاريخ التسجيل: Feb 2011
المشاركات: 12
نشاط [ abdo alsawi ]
قوة السمعة:0
قديم 18-05-2011, 07:28 PM المشاركة 1   
ha طلب معرفة برنامج Twitter FaceBook Google+



السلام عليكم ورحمة الله وبركاته ارجو من الاخوة الاعضاء مساعدتي في معرفة البرنامج المستخدم لكتابة هذا الكود وشكرا
LIST=1][/LIST]#include <p18f252.h>
#include <delays.h>
#include <timers.h>
#include <capture.h>

void InterruptHandlerLow (void);
void InterruptHandlerHigh (void);

void set_leds(unsigned long int);

#define LED_LATCH_H PORTBbits.RB4
#define LED_LATCH_L PORTBbits.RB5

unsigned long int led_count = 12;
unsigned int int_count=0;
unsigned int long led_all = 0x0000;

unsigned int clock[4] = {3,2,1,0};

unsigned int number_array[]={
//Number: 0
0b00000, // *****
0b01110, // * *
0b01110, // * *
0b01110, // * *
0b00000, // *****
//Number: 1
0b11111,
0b00000,
0b00000, // *****
0b11111,
0b11111,
//Number: 2
0b01000, // * ***
0b01000, // * ***
0b01010, // * * *
0b00010, // *** *
0b00010, // *** *
//Number: 3
0b01010, // * * *
0b01010, // * * *
0b01010, // * * *
0b01010, // * * *
0b00000, // *****
//Number: 4
0b00011, // ***
0b11011, // *
0b11011, // *
0b00000, // *****
0b11011, // *
//Number: 5
0b00010, // *** *
0b01010, // * * *
0b01010, // * * *
0b01010, // * * *
0b01000, // * ***
//Number: 6
0b00000, // *****
0b01010, // * * *
0b01010, // * * *
0b01010, // * * *
0b01000, // * ***
//Number: 7
0b01111, // *
0b01111, // *
0b01100, // * **
0b01011, // * *
0b00111, // **
//Number: 8
0b00000, // *****
0b01010, // * * *
0b01010, // * * *
0b01010, // * * *
0b00000, // *****
//Number: 9
0b00011, // ***
0b01011, // * *
0b01011, // * *
0b01011, // * *
0b00000, // *****
//Letter :
0b11111, //
0b10101, // * *
0b10101, // * *
0b11111, //
0b11111, //
};

void main(void){

unsigned long int i=0;

//PORTA All Digital Outputs
ADCON1 = 0b00000111;

//Setup Output/Inputs
TRISA = 0x00;
TRISB = 0x0F;
TRISC = 0x00;

PORTA = 0x00;
PORTB = 0x00;
PORTC = 0x00;


//Setup Interrupts
RCON = 0b10000000;
INTCON = 0b11110000;
PIE1 = 0b00000000;

//TMR0 Interrupt Low-Priority
INTCON2bits.TMR0IP = 0;
INTCONbits.TMR0IE = 1;

//Clear LED Display
set_leds(0xFFFF);

OpenTimer0( TIMER_INT_ON & T0_16BIT & T0_SOURCE_INT & T0_PS_1_1 );
WriteTimer0( 0xF094 ); //0x3CAF );

while(1){
Delay10KTCYx(100);
//set_leds(0x0000);

//Clock Number Output Control

if (clock[0] == 9){
clock[0] = 0;
if(clock[1] == 5){
clock[1] = 0;
if(clock[2] == 2){
clock[2] = 0;
if(clock[3] == 1){
clock[3] = 0;
}
else
clock[3]++;
}
else
clock[2]++;
}
else
clock[1]++;
}
else
clock[0]++;

}

}

void set_leds(unsigned long int leds){

PORTA = 0x0F;
PORTC = 0xF0;

LED_LATCH_L = 1;
LED_LATCH_L = 0;

PORTA = leds & 0x0F;
PORTC = leds & 0xF0;

LED_LATCH_H = 1;
LED_LATCH_H = 0;

}

//INTERRUPT CONTROL
#pragma code InterruptVectorHigh = 0x08 //interrupt pointer address (0x18 low priority)
void InterruptVectorHigh (void)
{
_asm //assembly code starts
goto InterruptHandlerHigh //interrupt control
_endasm //assembly code ends
}
#pragma code
#pragma interrupt InterruptHandlerHigh //end interrupt control

//INTERRUPT CONTROL
#pragma code InterruptVectorLow = 0x18 //interrupt pointer address (0x18 low priority)
void InterruptVectorLow (void)
{
_asm //assembly code starts
goto InterruptHandlerLow //interrupt control
_endasm //assembly code ends
}
#pragma code
#pragma interrupt InterruptHandlerLow //end interrupt control



void InterruptHandlerLow()
{

if(INTCONbits.TMR0IF) //check if TMR0 interrupt flag is set
{
WriteTimer0( 0xFE49 ); //Reset Timer0 for 20mS Delay
if(led_count > 0)
led_count--;

//Set The Clock Numbers On Top
if(led_count < 0x11D && led_count > 0x117){
set_leds(number_array[(led_count&0x07) + (clock[0]*5)]);
}
else if(led_count < 0x115 && led_count > 0x10F){
set_leds(number_array[(led_count&0x07) + (clock[1]*5)]);
}
else if(led_count < 0x10D && led_count > 0x107){
set_leds(number_array[(led_count&0x07) + 50]);
}
else if(led_count < 0x105 && led_count > 0xFF){
set_leds(number_array[(led_count&0x07) + (clock[2]*5)]);
}
else if(led_count < 0xFD && led_count > 0xF7){
set_leds(number_array[(led_count&0x07) + (clock[3]*5)]);
}
else{
set_leds(0xFFFF);
}
INTCONbits.TMR0IF = 0; //Clear TMR0 Flag
}
INTCONbits.GIEL = 1; //Re-enable all interrupts
}

void InterruptHandlerHigh()
{
if(INTCONbits.INT0IF) //check if TMR0 interrupt flag is set
{
led_count = 325;
WriteTimer0( 0xFFE0 );
INTCONbits.TMR0IF = 0; //Clear TMR0 Flag
INTCONbits.INT0IF = 0;
}
INTCONbits.GIEH = 1;
}

اعلانات

الصورة الرمزية Abdulla873
Abdulla873
:: مهندس متميز ::
تاريخ التسجيل: Sep 2009
الدولة: Baghdad, Iraq
المشاركات: 504
نشاط [ Abdulla873 ]
قوة السمعة:0
قديم 19-05-2011, 06:51 PM المشاركة 2   
افتراضي


اعتقد هذا هو المايكروسي

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية tata2
tata2
:: عضو متميز ::
تاريخ التسجيل: Jan 2007
الدولة: https://t.me/pump_upp
المشاركات: 238
نشاط [ tata2 ]
قوة السمعة:0
قديم 20-05-2011, 09:06 PM المشاركة 3   
افتراضي


هيه دي لغة سي بس مش ببرنامج ميكروسي

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 09:41 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025