السلام عليكم
استاذي شكرا لك على المساعدة
قمت بالعمل بنصيحتك وقد كتبت الكود التالي للـ output :
كود:
// S_CP = 11&12
// DATA = 14
// OE = 10
sbit DATA at PORTC.B0;
sbit S_CP at PORTC.B1;
sbit OE at PORTC.B2;
unsigned short count;
unsigned short counter;
unsigned short b_cont;
unsigned int ii=0;
unsigned long tester[]={0b11111111,0b11111111,0b11111111,0b11111111
,0b01111111,0b11111111,0b11111111,0b11111111
,0b00111111,0b11111111,0b11111111,0b11111111
,0b00011111,0b11111111,0b11111111,0b11111111};
void HC595(unsigned char out_bit)
{
unsigned int i=8;
unsigned char out_temp;
if(b_cont==3)
i=9;
for(counter=0;counter<i;counter++)
{
out_temp = out_bit & 0x80;
DATA = out_temp && 0x80;
S_CP = 1;
S_CP = 0;
out_bit <<= 1;
}
}
void main ()
{
DDRC=0xFF;
PORTC=0x00;
do {
for(count=0;count<4;count++)
{
OE=1;
for(b_cont=0;b_cont<4;b_cont++)
{
HC595(tester[ii]);
ii++;
}
OE=0;
}
ii=0;
}
while(1);
}
المايكرو المستخدم atmega8
واربع 74hc595
قمت بتجريبها على البروتوس وعملت
ولكن هل نستطيع كتابة خوارزمية أسرع وأفضل؟؟
وسؤال آخر ارجو الإجابة عليه
هل استطيع الكتابة على الفلاش مباشرة أثناء عمل المايكرو عن طريق الوصل بالحاسب
والقراءة منها كدخل للخوارمية السابقة عوضا عن المصفوفة الثابتة؟
مع جزيل الشكر