Professional Documents
Culture Documents
دروس دورة المهندس أحمد سمير فايد PDF
دروس دورة المهندس أحمد سمير فايد PDF
IC
Mini-Computer
ROMRAMProcessor
Pins
MicroController
controller
Micro
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
PIC
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ﻣﻔﺎﻫﻴﻢ ﺃﺳﺎﺳﻴﺔ
AVR PIC
MICROCHIP PIC
A4,A3,A2,A1,A0PORTA
B7B0PORTB
R
RA0A0
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
VDD
VDD
VDD,VSS
Led Microcontroller
PIC bit
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ﺍﻟﺘﺠﺮﺑﺔ
PIC16f84a
B0 LED
7805
ﻓﻮﻟﺖ٩ ﺑﻄﺎرﯾﺔ
VDD ﻓﻮﻟﺖ٥+ ﻛﯿﻠﻮ١٠ ﻣﻘﺎوﻣﺔ
أوم٤٢٠ ﻣﻘﺎوﻣﺔ
ﺑﯿﻜﻮ٢٢ ﻣﻜﺜﻒ
7805
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
LED
LED
7805
ﻓﻮﻟﺖ٩ ﺑﻄﺎرﯾﺔ
VDD
VDD ﻓﻮﻟﺖ٥+
١٠ ﻣﻘﺎوﻣﺔ
ﻛﯿﻠﻮ
VSS ﺻﻔﺮ ﻓﻮﻟﺖ
أوم٤٢٠ ﻣﻘﺎوﻣﺔ
ﺑﯿﻜﻮ ٢٢ ﻣﻜﺜﻒ
VSS
VSS
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
B0
MikroC
setup
ﻧﺨﺘﺎر اﺳﻢ ﻟﻠﻤﺸﺮوع
وﻧﻜﺘﺒﮫ ھﻨﺎ
ھﻨﺎ ﻧﻜﺘﺐ ﻣﺴﺎر اﻟﻤﺸﺮوع
ھﺬه ھﻲ اﻷواﻣﺮ أو ﻣﺎ ﯾﺴﻤﻰ ﺑﺎﻟﻜﻮد
وﻣﺠﻤﻮﻋﺔ اﻷواﻣﺮ ﻧﺴﻤﯿﮭﺎ اﻟﺒﺮﻧﺎﻣﺞ
B0
void main()
{
TRISB=0B00000000;
PORTB=0B00000001;
}
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
;
build project
Ctrl+F9
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
build project
hex
PICPgm Programmer
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ﻧﺨﺘﺎر ﻗﺎﺋﻤﺔ
ﺛﻢhardware
ﻧﻀﻐﻂ ﺑﺎﻟﻤﺎوس ھﻨﺎ
اﻟﻨﻮع اﻟﺬي اﺳﺘﺨﺪﻣﮫ
ﻓﻲ اﻟﻜﺘﺎب ﻛﻤﺎ ذﻛﺮت
JDM ھﻮ
OK
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
Browse
first_experiment.hex
اﺿﻐﻂ ھﻨﺎ
Open
اﺿﻐﻂ ھﻨﺎ
PIC16F84A
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
اﺿﻐﻂ ھﻨﺎ
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
MikroC
void main()
{ ﻓﻲ ھﺬه اﻟﻤﻨﻄﻘﺔ ﻧﻜﺘﺐ اﻟﻜﻮد
ﺑﯿﻦ اﻟﻘﻮﺳﯿﻦ
………………..
………………..
}
void main()
void
void main()
TRIS
PORTA TRISBPORTB
TRISA
TRIS
INPUT 1
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
B0 PORTB
B0 TRISB
B0
TRISBB0
BIT
TRISB
TRISB
0 0 0 0 0 0 0 0
رﻗﻢ اﻟﺮﺟﻞ B7 B6 B5 B4 B3 B2 B1 B0
B7 B0
TRISB=0B00000000;
TRISB=0B00000000
ھﺬا اﻟﺒﺖ ﺧﺎص ﺑﺎﻟﺮﺟﻞ رﻗﻢ
B7 B6 B5 B4 B3 B2 B1 B0
0B
B0
PORT PORT
LOW -0HI 1
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
PORTB HIB0
B0
TRISBPORTB
B7 B0
PORTB
0 0 0 0 0 0 0 1
B7 B6 B5 B4 B3 B2 B1 B0
PORTB=0B00000001
ھﺬا اﻟﺒﺖ ﺧﺎص ﺑﺎﻟﺮﺟﻞ رﻗﻢ
B7 B6 B5 B4 B3 B2 B1 B0
PORTB=0B00000001
TRISPORTB=0B00000001; ;
{ } TRISB=0B00000000;
syntax PORT TRIS
hex
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void main()
{
TRISB=0B00000000;
PORTB=0B00000001;
}
void main()
MikroC
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ﺍﻟﺘﺠﺮﺑﺔ
B7B5B1B0
7805
ﻓﻮﻟﺖ٩ ﺑﻄﺎرﯾﺔ
VDD
VDD ﻓﻮﻟﺖ٥+
ﻛﯿﻠﻮ١٠ ﻣﻘﺎوﻣﺔ
VSS ﺻﻔﺮ ﻓﻮﻟﺖ
أوم٤٢٠ ﻣﻘﺎوﻣﺔ
ﺑﯿﻜﻮ٢٢ ﻣﻜﺜﻒ
VSS
VSS
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ﻧﺨﺘﺎر اﺳﻢ ﻟﻠﻤﺸﺮوع وﻧﻜﺘﺒﮫ
ھﻨﺎ
ھﻨﺎ ﻧﻜﺘﺐ ﻣﺴﺎر اﻟﻤﺸﺮوع
ﻧﺨﺘﺎر ﻧﻮع اﻟﺒﻚ اي اﻟﻤﻜﺎن اﻟﺬي ﺳﯿﺤﻔﻆ
اﻟﻤﺴﺘﺨﺪم ﻓﻲ ﻓﯿﮫ
اﻟﻤﺸﺮوع
ھﻨﺎ ﻧﻜﺘﺐ ﺗﺮدد اﻟﻤﺆﻗﺖ
اﻟﻤﺴﺘﺨﺪم ﻓﻲ ﻣﺸﺮوﻋﻨﺎ ھﺬا
اﻛﺘﺒﮫ ﺑﻨﻔﺲ اﻟﻘﯿﻢ اﻟﻤﻮﺟﻮدة
1.04 ھﻨﺎ
ھﺬه ھﻲ اﻷواﻣﺮ أو ﻣﺎ ﯾﺴﻤﻰ ﺑﺎﻟﻜﻮد: ﻣﺮاﺟﻌﺔ
وﻣﺠﻤﻮﻋﺔ اﻷواﻣﺮ ﻧﺴﻤﯿﮭﺎ اﻟﺒﺮﻧﺎﻣﺞ
void main()
{
TRISB=0B00000000;
PORTB=0B10100011;
}
Ctrl+F9
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
B7B0TRISB=0B00000000;
B7B5B1B0PORTB=0B10100011;
B6B4B3B2
PORTB
1 0 1 0 0 0 1 1
B7 B6 B5 B4 B3 B2 B1 B0
ﺳﻮف ﯾﻀﻲءB5 اﻟﻠﯿﺪ اﻟﻤﻮﺻﻞ ﺑـ
BitsTRISB=0B00000000;
TRISB=0;
PORTB=0B10100011;
a30xPORTB=0XA3;
10100011
ﯾﻤﻜﻦ ﻛﺘﺎﺑﺘﮭﺎ ھﻜﺬا
PORTB=0B10100011; PORTB=0XA3;
void main()
TRISB=0;
PORTB=0XA3;
}
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
Mikroc
binary decimal
hexadecimal
10100011
QConvertor
اﺿﻐﻂ ھﻨﺎ
binary
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ﺍﻟﺘﺠﺮﺑﺔ
B7B0
7805
ﻓﻮﻟﺖ٩ ﺑﻄﺎرﯾﺔ
VDD
VDD ﻓﻮﻟﺖ٥+
ﻛﯿﻠﻮ١٠ ﻣﻘﺎوﻣﺔ
VSS ﺻﻔﺮ ﻓﻮﻟﺖ
أوم٤٢٠ ﻣﻘﺎوﻣﺔ
ﺑﯿﻜﻮ٢٢ ﻣﻜﺜﻒ
VSS
VSS
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
TRISB=0;
PORTB=0XFF; PORTB=0B11111111;
PORTB=0;
Void main()
{
اﻟﺒﻚ ﺳﯿﻨﻔﺬ اﻷﻣﺮ ﺛﻢ اﻟﺬي ﯾﻠﯿﮫ ﺛﻢ
TRISB=0; اﻟﺬي ﯾﻠﯿﮫ وھﻜﺬا ﻓﻲ ﻣﻨﺘﮭﻰ
.. اﻟﺴﺮﻋﺔ
PORTB=0XFF;
PORTB=0;
PORTB=0XFF;PORTB=0;
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
Delay_ms(500);
Delay_ms(250);
Void main()
TRISB=0;
PORTB=0xFF;
delay_ms(1000);
PORTB=0;
delay_ms(500);
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
LOOP:
…………………..
ﻓﻲ ھﺬه اﻟﻤﻨﻄﻘﺔ ﻧﻜﺘﺐ اﻟﻜﻮد اﻟﺬي
………………….. ﻧﺮﯾﺪه أن ﯾﺘﻜﺮر ﺑﺈﺳﺘﻤﺮار .
…………………..
ﻣﻌﻨﻰ ھﺬ اﻷﻣﺮ اذھﺐ إﻟﻰ اﻟﻌﻨﻮان loopواﺑﺪأ ﺗﻨﻔﯿﺬ اﻷواﻣﺮ اﻟﺘﻲ ﺑﻌﺪه
;goto LOOP
)(void main
{
ھﺬا اﻷﻣﺮ ﺳﯿﻮﻇﻒ ﺟﻤﯿﻞ اﻟﺮﺟﻮل ﻓﻲ PortBﻛﺨﺮج
; TRISB=0
ھﺬا ھﻮ اﻟﻌﻨﻮان اﻟﺬي ﺳﯿﺮﺟﻊ إﻟﯿﮫ اﻟﺒﻚ ﻣﺮة أﺧﺮى
Loop:
ھﺬا اﻷﻣﺮ ﺳﯿﺠﻌﻞ ﺟﻤﯿﻊ اﻟﻠﯿﺪات ﺗﻀﻲء
;PORTB=0XFF
ھﺬا اﻷﻣﺮ ﺳﯿﺠﻌﻞ اﻟﺒﻚ ﯾﻨﺘﻈﺮ ﻟﻤﺪة ﺛﺎﻧﯿﺔ ﺛﻢ ﯾﻨﻔﺬ اﻷﻣﺮ اﻟﺬي ﯾﻠﯿﮫ
;)delay_ms(1000
ھﺬا اﻷﻣﺮ ﺳﯿﺠﻌﻞ ﺟﻤﯿﻊ اﻟﻠﯿﺪات ﺗﻄﻔﺊ
;PORTB=0
ھﺬا اﻷﻣﺮ ﺳﯿﺠﻌﻞ اﻟﺒﻚ ﯾﻨﺘﻈﺮ ﻟﻤﺪة ﺛﺎﻧﯿﺔ ﺛﻢ ﯾﻨﻔﺬ اﻷﻣﺮ اﻟﺬي ﯾﻠﯿﮫ
;)Delay_ms(1000
; goto loop ھﺬا اﻷﻣﺮ ﺳﯿﺠﻌﻞ اﻟﺒﻚ ﯾﺬھﺐ ﻟﯿﻨﻔﺬ اﻷواﻣﺮ اﻟﺘﻲ ﺑﻌﺪ اﻟﻌﻨﻮان اﻟﺬي
اﺳﻤﮫ loop
}
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
PORTB=0;
Ahmad
ahmad:
…………………..
ﻓﻲ ھﺬه اﻟﻤﻨﻄﻘﺔ ﻧﻜﺘﺐ اﻟﻜﻮد اﻟﺬي
………………….. . ﻧﺮﯾﺪه أن ﯾﺘﻜﺮر ﺑﺈﺳﺘﻤﺮار
…………………..
goto ahmad;
Syntax
enter
void main()
{ TRISB=0;
PORTB=0XFF;}
;
enter
void main()
{ TRISB=0;PORTB=0XFF;}
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void main()
Delay_ms(1000);Goto loop;}
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ﺍﻟﺘﺠﺮﺑﺔ
proteus
MikroC
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void main()
{TRISB=0; PORTB=0;
loop:
PORTB=0B00000001; delay_ms(500); // L0 ON
goto loop;}
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
loop
L0 B0
B0L0 ON//
//
B2L1 B1
L2
loop:
PORTB=0B00000001; delay_ms(500);
PORTB=0B00000011; delay_ms(500);
PORTB=0B00000111; delay_ms(500);
PORTB=0B00001111; delay_ms(500);
PORTB=0B00011111; delay_ms(500);
PORTB=0B00111111; delay_ms(500);
PORTB=0B01111111; delay_ms(500);
PORTB=0B11111111; delay_ms(500);
PORTB=0B00000000; delay_ms(500);
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
PORTB=0B00011000; delay_ms(500);
PORTB=0B00111100; delay_ms(500);
PORTB=0B01111110; delay_ms(500);
PORTB=0B11111111; delay_ms(500);
PORTB=0B00000000; delay_ms(500);
PORTB=0B11111111; delay_ms(500);
PORTB=0B00000000; delay_ms(500);
PORTB=0B11111111; delay_ms(500);
PORTB=0B00000000; delay_ms(500);
/*
*/
*/
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ﺍﻟﺘﺠﺮﺑﺔ
B7B0
7805
ﻓﻮﻟﺖ٩ ﺑﻄﺎرﯾﺔ
VDD
VDD ﻓﻮﻟﺖ٥+
ﻛﯿﻠﻮ١٠ ﻣﻘﺎوﻣﺔ
VSS ﺻﻔﺮ ﻓﻮﻟﺖ
أوم٤٢٠ ﻣﻘﺎوﻣﺔ
ﺑﯿﻜﻮ٢٢ ﻣﻜﺜﻒ
VSS
VSS
B7B0
TRISB=0;TRISB
PORTB=0XFF;PORTB=0B11111111; PORTB
٣٣
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
delay_ms(1000);
PORTB=0;
forfor
For(x=0;x<18;x++)
………………………..
int x;x
for(x=0;x<18;x++)
}
٣٤
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
for
for
for(x=0;x<50;x++)
………………………..
}
delay_ms(1000);}}
for
for
moh for
moh
moh
moh
moh moh
moh
٣٥
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
for(x=0;x<13;x++){ ……………………}
for
for
{ }
1 for(y=0;y<12;y++) { ………….. }
2 for(ahmad=3;ahmad<18;ahmad++) { ………….. }
3 for(m=5;m<10;m++) { ………….. }
4 for(x=10;x>0;x--) { ………….. }
5
for(y=0;y<=12;y++) { ………….. }
x--
>=<=
٣٦
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
1 for(y=0;y<12;y++) { ………….. }
Yy
yy
2 for(ahmad=3;ahmad<18;ahmad++) { ………….. }
ahmad
ahmad
3 for(m=5;m<10;m++) { ………….. }
4 for(x=10;x>0;x--) { ………….. }
5 for(y=0;y<=12;y++) { ………….. }
٣٧
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
for(x=0;x<10;x++) { ………………….. }
for(x=1;x<=10;x++) { ………………….. }
for(x=10;x>0;x--) { ………………….. }
for(x=10;x>=1;x--) { ………………….. }
delay_ms(1000);
for(x=0;x<5;x++) delay_ms(1000);
for(x=0;x<5;x++) { delay_ms(1000);}
enter
for(x=0;x<5;x++)
delay_ms(1000);
delay_ms(5000);for
٣٨
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ﺍﻟﺘﺠﺮﺑﺔ
B0
B7
void main()
{ TRISB=0;
Loop:
PORTB=0XFF;delay_ms(1000);PORTB=0;Delay_ms(1000);
Goto loop;}
void main()
{ TRISB=0;PORTB=0;
Loop:
PORTB=~PORTB; delay_ms(1000);
goto loop;}
PORTB=~PORTB;
PORTB=0; PORTB
PORTB ~
BITS PORTB=~PORTB;
bits
٣٩
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
goto loop; delay_ms(1000);
PORTB=~PORTB;
bitbit
LOOP:
…………………..
ﻓﻲ ھﺬه اﻟﻤﻨﻄﻘﺔ ﻧﻜﺘﺐ اﻟﻜﻮد اﻟﺬي
………………….. . ﻧﺮﯾﺪه أن ﯾﺘﻜﺮر ﺑﺈﺳﺘﻤﺮار
…………………..
goto LOOP;
while (1)
……………..
for(;;)
……………..
٤٠
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ﺍﻟﺘﺠﺮﺑﺔ
switchB0
A0
TRISAA0
TRISA0
01
TRISA=0B00011111;
TRISA=0B00011111;
٤١
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
A0
A0
A5,A6,A7 PIC16F84A
BITs
TRISA
BITs
A4
VDD +5V
10k
٤٢
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
lowhiA0
A0
low hi
A0
A0
if
void main()
ﻋﻠﻰ أﻧﮭﺎ دﺧﻞA0 ﺗﻮﻇﯿﻒ اﻟﺮﺟﻞ
{ TRISA=0B00011111;
PORTB.F0=0;
وﻟﻜﻦ ھﺬا اﻷﻣﺮ ﻟﻦ ﯾﻨﻔﺬ إﻻ ﻓﻲ... اﺟﻌﻞ اﻟﻠﯿﺪ ﯾﻨﻄﻔﺊ
ﺣﺎﻟﺔ ﺗﺤﻘﻖ اﻟﺸﺮط وھﻮ ان اﻟﻤﻔﺘﺎح ﻣﺤﺮر
}
٤٣
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ifif
ifIf
If () { }
IF
If () { }
else {}
loop : if (PORTA.F0==0)
{ PORTB.F0=1; }
else {
PORTB.F0=0;
}
goto loop; }
٤٤
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
enter
FOR
if
loop:
else PORTB.F0=0;
goto loop;
syntax
proteus
٤٥
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
component mode
٤٦
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
pick p
devices
اﺿﻐﻂ ﺑﺎﻟﻤﺎوس ھﻨﺎ
pic16f84a
٤٧
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
٤٨
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
pic16f84a
اﺿﻐﻂ ﺑﺎﻟﻤﺎوس
ﻣﺮة واﺣﺪة ﻋﻠﻰ
اﻟﻌﻨﺼﺮ اﻟﺘﻲ
اﺿﻐﻂ ﺑﺎﻟﻤﺎوس
ﺗﺮﯾﺪ رﺳﻤﮫ
ﻣﺮﺗﯿﻦ ﻣﺘﺘﺎﻟﯿﺘﯿﻦ
ﺑﻌﺪ ﺗﺤﺪﯾﺪ اﻟﻤﻜﺎن
اﻟﻤﻨﺎﺳﺐ
zoom
٤٩
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
A0
٥٠
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
VDD VSS
VDDPOWERGROUND
٥١
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
E_6 hex
E_6.hex browse
ok
٥٢
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
اﺿﻐﻂ ھﻨﺎ
ﻟﺘﺸﻐﯿﻞ اﻟﺪاﺋﺮة
vss vdd
٥٣
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
8 ﺍﻟﺘﺠﺮﺑﺔ
654321
00000000
00000001
00000010
00000011
00000100
……………
………….
11111111
255
25511111111
59
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void main()
{ TRISB=0;
PORTB=0;delay_ms(1000);
Loop:
PORTB++;
Delay_ms(1000);
Goto loop;
TRISB=0;
PORTB=0;
portb++;
portb
portb=0;
00000000
portbportb++;
00000000
00000001
60
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
goto loop;
00000001portb
00000010
portb
00000011
binary
PORTB++
500
Loop:
PORTB=0B00000000;
Delay_ms(1000);
PORTB=0B00000001;
Delay_ms(1000);
PORTB=0B00000010;
Delay_ms(1000);
……………..
PORTB=0B11111111;
Delay_ms(1000);
Goto loop;
61
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
PORTB
PORTB=3;
PORTB=0B00000011;
62
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
9 ﺍﻟﺘﺠﺮﺑﺔ
9
b3,b2,b1,b0
1001
void main()
{ TRISB=0;
PORTB=0; delay_ms(1000);
while(1){
PORTB++;
delay_ms(1000);
}
}
goto looploop
5while(1)
if
portb portb
63
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
b7 b0
portb=0;trisb=0;
b0 while(1)
portb portb++
delay_ms(1000); b0
9 portb if
Portb
while if
b1 ( 10 2portb
if
11portbwhile
9 portb
if1001
portb portb=0; If
delay_ms(1000);
portbwhile
64
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
if for :
void main(){
char x;
TRISB=0; PORTB=0;
delay_ms(1000);
while(1){
portb=0;delay_ms(1000);
}
for portb
forportbfor
portb
65
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
10 ﺍﻟﺘﺠﺮﺑﺔ
3 30 12 9 6 3
01
………...
void main() {
TRISB=0; PORTB=0;delay_ms(1000);
number=3*x;
portb=number;
delay_ms(1000); }
portb=0; delay_ms(1000); } }
66
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
number=3*x;
portb=number;
delay_ms(1000);
number x=1
number=3*x; 3
portb=number;
b1 b0
portb=3;portb=0b00000011;
delay_ms(1000);
6 3X2 number x=2
portb=number; portb 6 x=2 number=3*x;
xx=3
x<=10 11 x 10
portb=0 for for
fordelay_ms(1000)
forfor
67
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
3
6
9
12
15
18
21
24
27
30
char8portb
B7B0PORTB
number
void main()
{char x;
TRISB=0; PORTB=0;delay_ms(1000);
portb=0; delay_ms(1000);
}
8portb
B7B05
68
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
for
Type Size in bytes Range
float 4 ±1.17549435082 * 10 .. ±6.80564774407 * 1038
-38
69
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
8 char
25511111111
255char
255 255255
signed char
127 -128
32.66
ahmadchar
char ahmad;
for;
char x;
x8
x , y , z
Char x;
Char y;
Char z;
70
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
Char x,y,z;
,
void main()
71
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
11 ﺍﻟﺘﺠﺮﺑﺔ
7 segmetns seven segment
7 segment ﺑﻌﺾ أﺷﻜﺎل اﻟﺴﻔﻦ ﺳﯿﺠﻤﻨﺖ
72
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
common anode
datasheet
7447
73
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
12 ﺍﻟﺘﺠﺮﺑﺔ
portb++
portb
portb
void main()
{ TRISB=0;
PORTB=9; delay_ms(1000);
while(1){
PORTB--;
delay_ms(1000);
}
}
74
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
delay_ms(1000);
void main()
{ TRISB=0;
PORTB=9;
while(1){ delay_ms(1000);
PORTB--;
}
}
75
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
delay_ms(1000);
76
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void main()
{char x; TRISB=0;
portb=9;
while(1){
for(x=10;x>0;x--)
delay_ms(1000);
portb--;
portb=9;
X
X
77
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void main()
{ TRISB=0;
while(1){
for(PORTB=9;PORTB>0;PORTB--)
{
delay_ms(1000);
}
}
}
PORTB
portbchar portb
porta
1
for
for(PORTB=9;PORTB>=0;PORTB--)
79
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void main()
{ TRISB=0;
while(1){
for(PORTB=9;PORTB>=0;PORTB--)
{
delay_ms(1000);
if(portb==0) portb=10;
}
}
}
if 255 portb
portb-- portb=10
9 portb
10
portb=10
80
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void main()
{ TRISB=0;
while(1){
for(PORTB=9;PORTB>0;PORTB--)
{
delay_ms(1000);
}
}
}
portb=9
8
1 portb
whileforfor
portb for for
for
81
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void main()
{ TRISB=0;
while(1){
for(PORTB=9;PORTB>0;PORTB--)
{
delay_ms(1000);
}
delay_ms(1000);
} }
forportb
while(1)
82
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
13 ﺍﻟﺘﺠﺮﺑﺔ
26 24
void main()
{ TRISB=0;portb=2;
while(1){
delay_ms(1000);
portb++;
portb++;
if (portb==8){ delay_ms(1000);portb=2;}
}
83
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
portb++
for for
Portb2
portb=portb+2;
2Portb
90Portb
portb=portb+90;
void main()
{ TRISB=0;portb=2;
while(1){
delay_ms(1000);
portb=portb+2;
if (portb==8){ delay_ms(1000);portb=2;}
84
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
portbporta=3;
portb=porta+2;
2portaportb
Portaportb
portb=portb+2; 3
portb Portb
portb Portb
2Portb
portb=portb+1portb++
portb
x=x+6 x
85
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
14 ﺍﻟﺘﺠﺮﺑﺔ
28
Portb=portb+2
portb=portb-2
void main()
{ TRISB=0;portb=8;
while(1){
delay_ms(1000);
portb=portb-2;
if (portb==2){ delay_ms(1000);portb=8;}
}
86
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
portb=portb-2
portb-=2;
portb=portb+2
Portb+=2;
portb=portb*5;5
Portb*=5
mm
mm=(350+12-yy)/10;
10
mm=350+12-yy/10;
87
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
15 ﺍﻟﺘﺠﺮﺑﺔ
if
if(porta.f0==0) { }
if(porta.f1==0) { }
88
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
portb++ portb
portb
portb portb-- portb
89
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void main()
{
TRISB=0; TRISA=0XFF;
PORTB=0;
while(1){
if(porta.f1==0){portb--; delay_ms(500);}
}
}
MCLR
active lowMCLR
MCLR
MCLRrestart
MCLR
90
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
push buttonMCLR
MCLR
5MCLR
portb
portb MCLR
portb=0;
MCLR
A2
if(porta.f2==0){portb=0; delay_ms(500);}
91
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
16 ﺍﻟﺘﺠﺮﺑﺔ
90
5
5
92
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void main()
{
TRISB=0; TRISA=0XFF;
PORTB=0;
while(1){
if(porta.f0==0) {
portb++;
if(portb==10) portb=0;
delay_ms(500);
}
if(porta.f1==0) {
portb--;
if(portb==255) portb=9;
delay_ms(500);
}
}
}
93
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
portb++portbif
portbif
if(portb==10) portb=0;
portb A1
255255
255 portb-- Portb
255Portb
if(portb==255) portb=9;
portb--if
portbportb--255portb
if(portb==0) portb=9;
portb--;
94
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
if(porta.f1==0) A1
portb portb
portb--
8
8
95
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
if(porta.f1==0) {
if(portb==0) portb=10;
portb--;
delay_ms(500);
}
96
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ﺍﻟﺘﺠﺮﺑﺔ
B0A0
B1
وھﻜﺬا
if
B0B0
B1
٩٧
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
If(porta.f0==0) { portb.f0=1;
……………..
………………
b1
if
ifif
ifb0if
b1
loop:
If(porta.f0==0) {portb.f1=1; }
………
goto loop;
b0
b1
b0
if
٩٨
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
if if
goto loop;
b1b0 if
if
loop:
If(porta.f0==0){ portb.f0=1;
a1:
If(porta.f0==0) {portb.f1=1;}
goto a1;
goto loop;
loop: goto loop;
if
b0
goto a1;
b1
b0 , b1 , b2 , b3
٩٩
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
If(porta.f0==0)
{ portb.f0=1;
goto a3; }
goto a2;}
goto a1;
goto loop;
goto loop; if
b0
goto a1;
goto a2; b1
b2
b3 goto a3;
loop:portb=0; goto loop;
١٠٠
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
b3delay_ms(500);
portb=0;
while
while
ifwhile
while
While ( )
}
١٠١
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
while
B0A0
while
while(porta.f0==0) {
portb.f0=1;
delay_ms(150);
portb.f0=0;
delay_ms(150);
}
trisbtrisavoid main()
B0
A0
١٠٢
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
mm=1;
while(mm<6) {
if(porta.f0==0) { portb.f0=1; delay_ms(500);
portb.f0=0; delay_ms(500);
mm++;
}
}
if
while
mmwhile
while
A0mm
B0 A0
mm mm
while
mm while
mm
١٠٣
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
while mm
whilemm
While(porta.f0==1){ }
while
loop:
While(porta.f0==1){ }
if(porta.f0==1) goto loop;
١٠٤
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
while
while(porta.f0==1) { }
portb=0b00000011; delay_ms(100);
while(porta.f0==1) { }
portb=0b00000111; delay_ms(100);
while(porta.f0==1) { }
portb=0b00001111; delay_ms(100);
while(porta.f0==1) { }
portb=0b00011111; delay_ms(100);
while(porta.f0==1) { }
portb=0b00111111; delay_ms(100);
while(porta.f0==1) { }
portb=0b01111111; delay_ms(100);
while(porta.f0==1) { }
portb=0b11111111; delay_ms(100); } }
١٠٥
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void main() {char x; trisa.f0=1; trisb=0; portb=0;
while(1) { if(porta.f0==0) x++ ; delay_ms(100);
if(x==0) portb=0;
if(x==1) portb=0b00000001;
if(x==2) portb=0b00000011;
if(x==3) portb=0b00000111;
if(x==4) portb=0b00001111;
if(x==5) portb=0b00011111;
if(x==6) portb=0b00111111;
if(x==7) portb=0b01111111;
if(x==8) portb=0b11111111;
if(x==9) x=0;
} }
١٠٦
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
x
while(1)
x
x
while(1) portb=0;
x++; x
b0if(x==1)
b0,b1
x
xportb
x
if(x==9) x=0;
١٠٧
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ﺍﻟﺘﺠﺮﺑﺔ
portb=0b00000001;
portb=0b00000010; delay_ms(500);
١٠٨
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void main()
{ trisb=0;
ahmad:
Portb=0b00000001; delay_ms(500);
for(x=0;x<8;x++){
portb=portb<<1;
delay_ms(500);
}
goto ahmad;
}
trisb=0; void main()
ahmad: B7 B0
goto ahmad;
while(1)
for(;;)
for B0 portb=0b00000001;
for portb=portb<<1; delay_ms(500);
١٠٩
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ﻗﺒﻞ ﻋﻤﻠﯿﺔ اﻹزاﺣﺔ ﻟﻠﯿﺴﺎرportb ﺷﻜﻞ
B7 B6 B5 B4 B3 B2 B1 B0
0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 1 0
ﺑﻌﺪ ﻋﻤﻠﯿﺔ اﻹزاﺣﺔ ﻟﻠﯿﺴﺎرportb ﺷﻜﻞ
PORTB B7
B5B7B6B6
B0B1B0B6
B7 B0
B0
Bits
portbPortbportb=portb<<1;
portb=portb+3;
portbportb
١١٠
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
portb=portb<<1; portb=0b00100111;
bits 0b01001110; portb
<<
led=0b00000110; led
0b00000011 led led>>1;
B7 b3 B2 B1 B0 portb=led;
portb=0b00000011;ledportb
>>
<<
char led;
led=0b00000110;
led=led>>1;
portb=led;
char led = ob00000110; 00000110
١١١
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
portb=led; led=led>>1;
portb=led>>1;
led led=led>>1;
GG GG
led PORTB 0B00000011
0b00000011portb
portb=led>>1;led=0b00000110;
GG=led;
GGled
0b00000110 led
portb=led>>1;0b00000011portb
١١٢
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
x=x>>2;x=0b11000111;
0b00110001x
0b01100011 x
0b00110001
١١٣
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ﺍﻟﺘﺠﺮﺑﺔ
A0
void main()
{
trisa.f0=1; trisb=0;
portb=0b00000001;
while(1) {
B0 B1 portb
B2
١١٤
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
B7
0b00000000 portb
0b00000000
void main()
{
trisa.f0=1; trisb=0;
portb=0b00000001;
while(1) {
١١٥
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
while
while
portb=0b00000001;
while(1)
while
A0
void main()
{
trisa.f0=1; trisb=0;
portb=0b00000001;
while(1) {
if(porta.f0==0) { while(porta.f0==0){ } portb=portb<<1;}
if(portb=0b10000000) { while(porta.f0==1){ } portb=0b00000001; while(porta.f0==0){ } }
}
}
B7
B0while(porta.f0==1){ }
while(porta.f0==0){ }
١١٦
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
while
delay
while
while
١١٧
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
20 ﺍﻟﺘﺠﺮﺑﺔ
A1A0
void main()
{
trisa.f0=1; trisa.f1=1; trisb=0;
portb=0b00000001;
while(1) {
if(porta.f0==0) { delay_ms(100); portb=portb<<1;}
if(porta.f1==0) { delay_ms(100); portb=portb>>1;}
}
}
A0
A1
١١٨
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
A1 0B00000001 PORTB
A1 A0
0b00000001 portb if
0b10000000 portbA1
0b10000000portb
0b000000001portb A0
void main()
{
trisa.f0=1; trisa.f1=1; trisb=0;
portb=0b00000001;
while(1) {
١١٩
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
portb=0b00000001
ififif(portb=0b00000001)if
A1
0b00000000 portb
void main() {
trisa.f0=1; trisa.f1=1; trisb=0; portb=0b00000001;
while(1) {
if(porta.f1==0) { portb=portb>>1;
delay_ms(100); }
loop:
goto loop;
goto loop;
١٢٠
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
(loop) portb=0b00000001
portb
portb=0b00000001
portb
A1 if
if 0B100000000 PORTB
0b00000010 portbA0
if
goto loop;
portb=0b10000000
١٢١
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ﺍﻟﺘﺠﺮﺑﺔ
Buzzer
Buzzer
level mode Buzzer
Beeper
Buzzer level Buzzer
frequency mode
١٢٥
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
Buzzer Buzzer
Buzzer
datasheet
اﻧﺘﺒﮫ ﻟﻘﻄﺒﯿﺔ
أﺛﻨﺎءBuzzer اﻟـ
اﻟﺘﻮﺻﯿﻞ
Buzzer
A0
Porta.f0=1;
١٢٦
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
Buzzer
A0
Porta.f0=0;
Buzzer
B7B0
A0 BuzzerA1
void main()
{
trisa.f0=1; trisa.f1=0; trisb=0; portb=0;
while(1) { Buzzerﻗﻢ ﺑﺘﺸﻐﯿﻞ اﻟـ
if(porta.f1==0) {
وﺑﺎﻟﺘﺎﻟﻲ ﺳﻨﺴﻤﻊ ﺻﻮت
اﻟﺼﺎﻓﺮة
porta.f0=1; // Buzzer ON
portb++;
while(porta.f1==0){ } // wait
transistor as a switch
RB
Base
collector
Buzzer emitter
Buzzeropen circuit
١٢٨
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
Buzzer
Buzzer
porta.f0=1;
porta.f0=0;Buzzer
porta.f0=1;
porta.f0=0;
١٢٩
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
Buzzer
MOSFET
A0
Buzzer porta.f0=1;
open circuitporta.f0=0;
Buzzer
MOSFETBJT
١٣٠
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ﺍﻟﺘﺠﺮﺑﺔ
speakerloudspeaker
speaker ﺑﻌﺾ أﺷﻜﺎل اﻟـ
١٣١
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
speaker
piezo transducer
Buzzer
١٣٢
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
B0
void main()
{ trisb=0; portb=0;
while(1) {
portb.f0=1; delay_ms(3);
portb.f0=0; delay_ms(3);
}
}
B0
١٣٣
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
B0
while(1) {
portb.f0=1; delay_ms(4);
portb.f0=0; delay_ms(1);
B0
B0
١٣٤
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
while(1) {
portb.f0=1; delay_ms(5);
portb.f0=0; delay_ms(5);
}
while(1) {
portb.f0=1; delay_ms(8);
portb.f0=0; delay_ms(2);
}
while(1) {
portb.f0=1; delay_ms(6);
portb.f0=0; delay_ms(4);
}
١٣٥
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
delay_ms
um
delay_us(1);
١٣٦
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
B0
while(1) {
portb.f0=1; delay_us(5);
portb.f0=0; delay_us(5);
}
Buzzer
headphone
١٣٧
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void main()
{ trisb=0; portb=0;
while(1) {
portb.f0=1; delay_ms(1);
portb.f0=0; delay_ms(1);
}
}
void main()
{ trisb=0; portb=0;
while(1) {
portb.f0=1; delay_ms(2);
portb.f0=0; delay_ms(1);
}
}
١٣٨
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
proteus
delay_us
void main()
{ trisb=0; portb=0;
while(1) {
portb.f0=1; delay_us(100);
portb.f0=0; delay_ms(100);
}
}
while(1) { }
for
void main()
{ int x;
trisb=0; portb=0;
for(x=0;x<2000;x++){
portb.f0=1; delay_us(100);
portb.f0=0; delay_ms(100);
}
}
١٣٩
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
for
intchar
for
x
delay_us( )
delay
for
١٤٠
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void main()
{ int x;
trisb=0; portb=0;
while(1){
for(x=0;x<300;x++){ portb.f0=1; delay_us(700);
portb.f0=0; delay_us(700);}
for(x=0;x<300;x++){ portb.f0=1; delay_us(750);
portb.f0=0; delay_us(750);}
for(x=0;x<250;x++){ portb.f0=1; delay_us(800);
portb.f0=0; delay_us(800);}
portb.f0=0; delay_us(700);}
}
}
١٤١
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
for
١٤٢
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
x
delay_us(2) delay_us(1)
x
for
for(y=0;y<15;y++) {
ﻣﺮة١٥ ﻫﻨﺎ ﺳﻨﻜﺘﺐ اﻷواﻣﺮ ﺳﺘﻜﺮر
}
{ }
١٤٣
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
xx
x x
x
for(y=0;y<x;y++) delay_us(1);
void main( )
{ int x; trisb=0; portb=0;
while(1){ portb.f0=1; delay_us(x);
portb.f0=0; delay_us(x); x++;
}
}
void main( )
{ int x,y; trisb=0; portb=0;
while(1){ portb.f0=1; for(y=0;y<x;y++) delay_us(1);
portb.f0=0; for(y=0;y<x;y++) delay_us(1);
x++;
}
}
١٤٤
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
delay_us( )
delay_us(1)
Oscillators
cycles
pic16f84a
for if
Assembly languge
١٤٥
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
CRRC Oscillator
Crystal oscillator
ﺑﻌﺾ أﺷﻜﺎل اﻟﻜﺮﯾﺴﺘﺎل
RC oscillator
_RC_OSC
_XT_OSC
_HS_OSC
١٤٦
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
RC oscillator _RC_OSC
200_XT_OSC
4
254_HS_OSC
20
Default
HSXTRC
RC OSC
CR
=
. × ×
١٤٧
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
RC OSCILLATOR
OSC2OSC1
DatasheetOSC1,OSC2
pin diagram
OSC1,OSC2
١٤٨
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
pic16f84a
OSC1
OSC2
١٤٩
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ceramic resonator
OSC1,OSC2
resonator
_XT_OSC HS XT mode )
_HS_OSC resonator
4resonato
OSC2OSC1
Resonators ﺑﻌﺾ أﺷﻜﺎل اﻟـ
١٥٠
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ﺍﻟﺘﺠﺮﺑﺔ
portb.f0=0; delay_us(800);}
for(x=0;x<450;x++){ portb.f0=1; delay_us(500);
portb.f0=0; delay_us(750);}
} }
١٥١
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void main(){ int x; trisb=0; portb=0;
while(1){
for(x=0;x<400;x++){ portb.f0=1; delay_us(450);
portb.f0=0; delay_us(480);}
for(x=0;x<450;x++){ portb.f0=1; delay_us(350);
portb.f0=0; delay_us(450);}
} }
for(y=0;y<x;y++) delay_us(1);
١٥٢
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void main()
{ int x,y; trisb=0; portb=0;
while(1){
for(x=1;x<300;x++){
portb.f0=1; for(y=0;y<x;y++)delay_us(10);
portb.f0=0; for(y=0;y<x;y++)delay_us(10);
}
}
}
while(1)for
for
portb.f0=1; x=1
x for(y=0;y<x;y++)delay_us(10);
for
portb.f0=0;
forx
portb.f0=1;
for(y=0;y<x;y++)delay_us(10);
١٥٣
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void main()
{ int x,y; trisb=0; portb=0;
while(1){
for(x=250;x>0;x--){
portb.f0=1; for(y=0;y<x;y++)delay_us(5);
portb.f0=0; for(y=0;y<x;y++)delay_us(5);
portb.f0=1; for(y=0;y<x;y++)delay_us(10);
}
}
}
x
void main()
{ int x,y; trisb=0; portb=0;
while(1){
for(x=0;x<50;x++){
portb.f0=1; for(y=0;y<x;y++)delay_us(10);
portb.f0=0; for(y=0;y<x;y++)delay_us(10);
}
}
}
١٥٤
ﻛﺘﺎﺏ ﺍﺣﺘﺮﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
for
for
١٥٥
Buzzer
Buzer
Portb
PNP
NPN
BJT MOSFET
NPN PNP
Base
Base
gate MOSFET
Coupling capacitor
digital analog
analog
RC filter
RC filter analogdigital
hfe=200
emittercollector
ahmad_s_f@hotmail.com
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ﺍﻟﺘﺠﺮﺑﺔ
functions
B7B0
void main()
{trisb=0;
portb=0;
while(1)
{portb=0b10000001;delay_ms(100);
portb=~portb; delay_ms(100);
Portb=0b11000011;delay_ms(100);
portb=~portb; delay_ms(100);
Portb=0b11100111;delay_ms(100);
portb=~portb; delay_ms(100);
Portb=0b11111111;delay_ms(100);
portb=~portb; delay_ms(100);
}
}
10000001
portb=~portb;011111110
1100000011
0011111100portb=~portb;
١٥٩
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
B7 B0
invert
showahmad
Invert(0b100000001);
Portb=0b100000001; delay_ms(100);
Portb=~portb; delay_ms(100);
Invert(0b11100111);
Portb=0b111000111; delay_ms(100);
Portb=~portb; delay_ms(100);
Portbinvert( );
١٦٠
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
Invert
void main
void invert(char aaa)
اﻟﺬي ﻧﺨﺒﺮ ﻫﺬا ﻫﻮ
{
ﻓﻴﻪ اﻟﻤﻴﻜﺮوﻛﻨﺘﺮوﻟﺮ ﺑﺎﻟﻮﻇﻴﻔﺔ اﻟﺘﻲ
portb=aaa; delay_ms(100); invert ﺳﻴﺆدﻳﻬﺎ اﻷﻣﺮ اﻟﺠﺪﻳﺪ
portb=~portb; delay_ms(100);
}
ﻫﺬا اﻷﻣﺮ ﻋﻨﺪﻣﺎ ﻧﻜﺘﺒﻪ ﻓﺈن اﻟﻤﻴﻜﺮوﻛﻨﺘﺮوﻟﺮ
ﻳﺒﺪأ ﺑﺘﻨﻔﻴﺬ اﻷواﻣﺮ اﻟﺘﻲ ﺑﺪاﺧﻞ ﺗﻌﺮﻳﻒ اﻟﺪاﻟﺔ
ﻳﺴﺎوي اﻟﻘﻴﻤﺔ اﻟﺘﻲaaa و ﻳﺠﻌﻞ اﻟﻤﺘﻐﻴﺮ
void main() ﻛﺘﺒﻨﺎﻫﺎ ﺑﻴﻦ اﻟﻘﻮﺳﻴﻦ اﻟﺨﺎﺻﻴﻦ ﺑﺎﻷﻣﺮ
{trisb=0;portb=0; Invert ( );
While(1){invert(0b11000011);
}
}
while(1) trisb=0;portb=0;
invert invert(0b11000011);
Invert
0b11000011portb Portb=aaa;
Portb=~portb;
invert(0b11000011);
while(1)
١٦٢
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void invert(char aaa)
{
portb=aaa; delay_ms(100);
portb=~portb; delay_ms(100);
}
void main(){trisb=0;portb=0;
while(1){
invert(0b10000001);
invert(0b11000011);
invert(0b11100111);
invert(0b11111111);
}
}
portbinvert
portb
B7B0
A0
A1
١٦٣
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void main(){char x;
trisb=0;portb=0; trisa.f0=1;trisa.f1=1;
for(x=0;x<2;x++){ portb=0b00000001;delay_ms(200);
portb=0b00000011;delay_ms(200);
ﺣﺮﻛﺔ اﻟﻠﻴﺪات ﻣﻦ
portb=0b00000111;delay_ms(200);
اﻟﻴﻤﻴﻦ ﻟﻠﻴﺴﺎر
portb=0b00001111;delay_ms(200); وﺗﺘﻜﺮر ﻣﺮﺗﻴﻦ
portb=0b00011111;delay_ms(200); ﻷﻧﻬﺎ داﺧﻞ ﺟﻤﻠﺔ
for
portb=0b00111111;delay_ms(200);
portb=0b01111111;delay_ms(200);
portb=0b11111111;delay_ms(200);}
for(x=0;x<3;x++){portb=0b10000000;delay_ms(200);
portb=0b11000000;delay_ms(200);
ﺣﺮﻛﺔ اﻟﻠﻴﺪات ﻣﻦ
portb=0b11100000;delay_ms(200);
اﻟﻴﺴﺎر ﻟﻠﻴﻤﻴﻦ
portb=0b11110000;delay_ms(200); وﺗﺘﻜﺮر ﺛﻼث
portb=0b11111000;delay_ms(200); ﻣﺮات
portb=0b11111100;delay_ms(200);
portb=0b11111110;delay_ms(200);
portb=0b11111111;delay_ms(200);}
while(1){ if(porta.f0==0){ portb=0b00000001;delay_ms(200);
portb=0b00000011;delay_ms(200);
portb=0b00000111;delay_ms(200);
portb=0b00001111;delay_ms(200);
portb=0b00011111;delay_ms(200);
portb=0b00111111;delay_ms(200);
portb=0b01111111;delay_ms(200);
portb=0b11111111;delay_ms(200);}
if(porta.f1==0) {portb=0b10000000;delay_ms(200);
portb=0b11000000;delay_ms(200);
portb=0b11100000;delay_ms(200);
portb=0b11110000;delay_ms(200);
portb=0b11111000;delay_ms(200);
portb=0b11111100;delay_ms(200);
portb=0b11111110;delay_ms(200);
portb=0b11111111;delay_ms(200);}
} }
١٦٤
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
If A1 A0
while(1)
functions
right_left
left_right
١٦٥
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
Void right_left(){ portb=0b00000001;delay_ms(200);
portb=0b00000011;delay_ms(200);
portb=0b00000111;delay_ms(200);
portb=0b00001111;delay_ms(200);
portb=0b00011111;delay_ms(200);
portb=0b00111111;delay_ms(200);
portb=0b01111111;delay_ms(200);
portb=0b11111111;delay_ms(200);}
Void left_right(){portb=0b10000000;delay_ms(200);
portb=0b11000000;delay_ms(200);
portb=0b11100000;delay_ms(200);
portb=0b11110000;delay_ms(200);
portb=0b11111000;delay_ms(200);
portb=0b11111100;delay_ms(200);
portb=0b11111110;delay_ms(200);
portb=0b11111111;delay_ms(200);}
void main(){char x;
trisb=0;portb=0; trisa.f0=1;trisa.f1=1;
for(x=0;x<2;x++)right_left();
for(x=0;x<3;x++)left_right();
while(1){ if(porta.f0==0) right_left();
if(porta.f1==0) left_right();
}
}
right_left();
left_right();
١٦٦
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
functions
parameters
void any_name()
{
ﻫﻨﺎ ﻧﻜﺘﺐ اﻷواﻣﺮ اﻟﱵ ﺳﺘﻨﻔﺬ ﻋﻨﺪﻣﺎ ﻧﺴﺘﺪﻋﻲ ﻫﺬه اﻟﺪاﻟﺔ
}
void main()
{………… ﻋﻨﺪﻣﺎ ﻧﺮﻳﺪ اﺳﺘﺪﻋﺎء اﻟﺪاﻟﺔ ﻟﺘﻨﻔﺬ
………… ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻷواﻣﺮ ﻧﻜﺘﺐ اﺳﻤﻬﺎ ﺛﻢ
( ) ﻧﺘﺒﻌﻬﺎ ﺑﻘﻮﺳﻴﻦ ﻓﺎرﻏﻴﻦ
any name();
}
attention
attention();
void attention()
{ char kk;
for(kk=0;kk<5;kk++){
porta.f0=1; delay_ms(100);
porta.f0=0; delay_ms(100);
}
}
١٦٧
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void main()attention();
{ }
b5b0
b6 B1
b7 b2
void attention()
{ char kk;
for(kk=0;kk<5;kk++){porta.f0=1; delay_ms(100);porta.f0=0; delay_ms(100); }
}
void main()
{ trisb.f0=1; trisb.f1=1; trisb.f2=1; اﺟﻌﻞ اﻟﺜﻼث اﻟﻤﻮﺻﻞ ﺑﻪ اﻟﺴﻮﻳﺘﺸﺎت ﻛﺪﺧﻞ
trisb.f5=0; trisb.f6=0; trisb.f7=0; اﺟﻌﻞ اﻟﺜﻼث أﻃﺮف اﻟﻤﻮﺻﻞ ﺑﻬﺎ اﻟﻠﻴﺪات ﻛﺨﺮج
trisa.f0=0; اﺟﻌﻞ اﻟﻄﺮف اﻟﻤﻮﺻﻞ ﺑﻪ اﻟﻠﻴﺪ اﻟﺨﺎص ﺑﺎﻟﺘﺤﺬﻳﺮ ﻛﺨﺮج
while(1){ portb.f5=0;portb.f6=0;portb.f7=0; اﻃﻔﺊ اﻟﻠﻴﺪات ﻓﻲ اﻟﺒﺪاﻳﺔ وﺑﻌﺪ رﻓﻊ اﻟﻴﺪ ﻣﻦ ﻋﻠﻰ أي ﺳﻮﻳﺘﺶ
if(portb.f0==0) {mm1: portb.f5=1; إذا ﺗﻢ اﻟﻀﻐﻂ ﻋﻠﻰ اﻟﺴﻮﻳﺘﺶ اﻷول ﻗﻢ ﺑﺈﺿﺎءة اﻟﻠﻴﺪ اﻷول
if(portb.f1==0||portb.f2==0) a en on();ﺑﺘﺤﺬﻳﺮ اﻟﻤﺴﺘﺨﺪم إذا ﺿﻐﻂ ﻋﻠﻰ أي ﺳﻮﻳﺘﺶ آﺧﺮ ﻗﻢ
if(portb.f0==0)goto mm1; إذا ﻛﻨﺎ ﺿﺎﻏﻄﻴﻦ ﻋﻠﻰ اﻟﺴﻮﻳﺘﺶ اﻷول ﻛﺮر ﻣﺎ ﺳﺒﻖ ﻣﺮة أﺧﺮى
} اي واﺟﻌﻞ اﻟﻠﻴﺪ اﻷول ﻣﻀﻴﺌﺎ
if(portb.f1==0) {mm2: portb.f6=1; إذا ﺗﻢ اﻟﻀﻐﻂ ﻋﻠﻰ اﻟﺴﻮﻳﺘﺶ اﻟﺜﺎﻧﻲ ﻗﻢ ﺑﺈﺿﺎءة اﻟﻠﻴﺪ اﻟﺜﺎﻧﻲ وإذا ﺗﻢ اﻟﻀﻐﻂ
if(portb.f0==0||portb.f2==0) a en on(); (ﻋﻠﻰ اﻟﺴﻮﻳﺘﺶ اﻷول أو اﻟﺜﺎﻟﺚ ﻗﻢ ﺑﻌﻤﻠﻴﺔ اﻟﺘﺤﺬﻳﺮ)اﺳﺘﺪاﻋﺎء اﻟﺪاﻟﺔ
if(portb.f1==0)goto mm2; إذا ﻛﻨﺎ ﻣﺴﺘﻤﺮﻳﻦ ﻓﻲ اﻟﻀﻐﻂ ﻗﻢ ﺑﺘﻜﺮار ﻣﺎﺳﺒﻖ
}
if(portb.f2==0) {mm3: portb.f7=1; إذا ﺗﻢ اﻟﻀﻐﻂ ﻋﻠﻰ اﻟﺴﻮﻳﺘﺶ اﻟﺜﺎﻟﺚ ﻗﻢ ﺑﺈﺿﺎءة اﻟﻠﻴﺪ اﻟﺜﺎﻟﺚ وإذا ﺿﻐﻄﻨﺎ أﺛﻨﺎء ذﻟﻚ ﻋﻠﻰ اﻟﺴﻮﻳﺘﺶ اﻷول
if(portb.f0==0||portb.f1==0) a en on(); أو اﻟﺜﺎﻧﻲ ﻗﻢ ﺑﺎﺳﺘﺪﻋﺎء داﻟﺔ اﻟﺘﻨﺒﻴﻪ
if(portb.f2==0)goto mm3;
}
}
}
١٦٨
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
()
void any_name(char nn)
{
ﻫﻨﺎ ﻧﻜﺘﺐ اﻷواﻣﺮ اﻟﱵ ﺳﺘﻨﻔﺬ ﻋﻨﺪﻣﺎ ﻧﺴﺘﺪﻋﻲ ﻫﺬه اﻟﺪاﻟﺔ
}
void main()
{………… ﻋﻨﺪﻣﺎ ﻧﺮﻳﺪ اﺳﺘﺪﻋﺎء اﻟﺪاﻟﺔ ﻟﺘﻨﻔﺬ ﻣﺠﻤﻮﻋﺔ ﻣﻦ
اﻷواﻣﺮ ﻧﻜﺘﺐ اﺳﻤﻬﺎ ﺛﻢ ﻧﺘﺒﻌﻬﺎ ﺑﻘﻮﺳﻴﻦ ) ( وﻧﻜﺘﺐ
…………
nn داﺧﻞ اﻟﻘﻮﺳﻴﻦ اﻟﺮﻗﻢ اﻟﺬي ﺳﻴﻤﺮر إﻟﻰ اﻟﻤﺘﻐﻴﺮ
any name(;)ﻫﻨﺎ ﻧﻜﺘﺐ أي رﻗﻢ أو ﻣﺘﻐﲑ ﻳﺴﺎوي ﻫﺬا اﻟﺮﻗﻢ اﻟﻤﻜﺘﻮبnn ﻟﻴﺼﺒﺢ
}
parameters
invert
portb
portb
void MNO(char ww,int yy)
{char x;
portb=ww;
for(x=0;x<yy;x++) delay_ms(1);
portb=0; وﻫﺬا اﻟﺮﻗﻢww ﻫﻮ اﻟﺬي ﺳﻴﺘﻢ وﺿﻌﻪ ﻓﻲ اﻟﻤﺘﻐﻴﺮ0xff اﻟﺮﻗﻢ
} char ﻟﺬﻟﻚ ﺳﻨﺠﻌﻞ اﻟﻤﺘﻐﻴﺮ ﻣﻦ اﻟﻨﻮع٢٥٥ ﻟﻦ ﻳﺰﻳﺪ ﻋﻦ
void main() وﺑﻤﺎ أن ﻫﺬا اﻟﻤﺘﻐﻴﺮ ﻗﺪyy ﻫﻲ ﻗﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ١٥٠٠ واﻟﻘﻴﻤﺔ
{……………. int ﻟﺬﻟﻚ ﺟﻌﻠﻨﺎه ﻣﻦ اﻟﻨﻮع٢٥٥ ﻳﺄﺧﺬ ﻗﻴﻤﺔ أﻛﺒﺮ ﻣﻦ
…………….
MNO(0xff,1500);
}
١٦٩
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
for
void MNO(char ww,int yy)
{portb=ww;
vdelay_ms(yy);
portb=0;
}
void main()
{…………….
…………….
MNO(0xff,1500);
}
intyycharww
char intyy
255
١٧٠
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void
add
portbportb
void
void
floatintchar
portb=add(5,20)
١٧١
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
portb
xx=add(5,3);
char add(char num1,int num2)
{
return (num1+num2);
}
void main()
{…………….
…………….
Portb=add(5,20);
}
portb
portb
int mult(char num1,int num2)
{
return (num1*num2);
}
void main()
{ trisb=0; portb=0;
portb=mult(9,2) ;
delay_ms(5000);
portb=mult(10,3) ;
delay_ms(2000);
portb=mult(200,5) ;
}
١٧٢
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ﺍﻟﺘﺠﺮﺑﺔ
7segment Seven Segment
cb
cba
decimal pointd.p
anode
common anode
١٧١
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
common cathode
cathode
common cathode
common common
common
common cathodeanode
common common cathode
f
common anode
common cathode
void main()
{
a
b trisb=0;
c
portb=0b00110000;
}
١٧٢
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
Common cathode:
ba
isis
status bar
gf
١٧٣
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ﻗﻒ ﺑﺎﻟﻤﺎوس ﻫﻨﺎ
portb=0b00110000;portb
portb=0b00000011; Portb=3;
0110000
١٧٤
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ﺍﻟﺘﺠﺮﺑﺔ
common cathode
portb=0b00111111
portb=0b00000110
void main() {
trisb=0;
for(;;){
portb=0b00111111; delay_ms(1000);
portb=0b00000110; delay_ms(1000);
portb=0b01011011; delay_ms(1000);
portb=0b01001111 ; delay_ms(1000);
portb=0b01100110 ; delay_ms(1000);
portb=0b01101101 ; delay_ms(1000);
portb=0b01111101; delay_ms(1000);
portb=0b00000111; delay_ms(1000);
portb=0b01111111 ; delay_ms(1000);
portb=0b01101111 ; delay_ms(1000);
}
}
١٧٥
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void main() {
trisb=0;
}
}
––
١٧٦
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
common cathode
common anode
common cathode portb=109;
portb=146;
١٧٧
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void main() { char x;
trisb=0;
for(;;){
if(x==0){ portb=0b00111111; delay_ms(1000);}
if(x==1){ portb=0b00000110; delay_ms(1000);}
If(x==10)x=0;
}
}
١٧٨
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void main() { char x;
trisb=0;
for(;;){
if(x==0) portb=0b00111111;
if(x==1) portb=0b00000110;
if(x==2) portb=0b01011011;
if(x==3) portb=0b01001111;
if(x==4) portb=0b01100110;
if(x==5) portb=0b01101101;
if(x==6) portb=0b01111101;
if(x==7) portb=0b00000111;
if(x==8) portb=0b01111111;
if(x==9) portb=0b01101111;
delay_ms(1000);
X++;
If(x==10)x=0;
}
delay_ms(1000); for(;;)
xfor
function
segment(0); segment
segment(5)
١٧٩
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void segment(char kk)
{ if(kk==0) portb=0b00111111;
if(kk==1) portb=0b00000110;
if(kk==2) portb=0b01011011;
if(kk==3) portb=0b01001111;
if(kk==4) portb=0b01100110;
if(kk==5) portb=0b01101101;
if(kk==6) portb=0b01111101;
if(kk==7) portb=0b00000111;
if(kk==8) portb=0b01111111;
if(kk==9) portb=0b01101111;
}
segment(x);
delay_ms(1000);
X++;
If(x==10)x=0;
}
}
if(kk==1) portb=0b00000110;
if(kk==2) portb=0b01011011;
if(kk==3) portb=0b01001111;
if(kk==4) portb=0b01100110;
if(kk==5) portb=0b01101101;
if(kk==6) portb=0b01111101;
if(kk==7) portb=0b00000111;
if(kk==8) portb=0b01111111;
if(kk==9) portb=0b01101111;
}
void main() { char x; trisb=0;
for(;;){ for(x=0;x<10;x++) {segment(x); delay_ms(1000);} // اﻟﻌﺪ اﻟﺘﺼﺎﻋﺪي ﻣﻦ ﺻﻔﺮ إﻟﻰ ﺗﺴﻌﺔ
}
}
١٨١
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
x for
x segment
forfor
for
for(x=0;x<=4;x++) {segment(x*2);
delay_ms(1000);}
for
for
x>=0 x=9
١٨٢
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
for x--
x-- for
x=1 { }
x x-- { } for
for x>=0
x>=0 x x--
segment
x--
x
for
١٨٣
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
x
SWITCH CASEIF
switch (x)
ﻫﻨﺎ ﻧﻜﺘﺐ ﻣﺠﻤﻮﻋﺔ اﻷواﻣﺮ
{ case 2: …………………………… ﻳﺴﺎويx اﻟﺘﻲ ﺳﺘﻨﻔﺬ إذا ﻛﺎن
……………………………. Break;
اﺛﻨﻴﻦ
case 7: ﻫﻨﺎ ﻧﻜﺘﺐ ﻣﺠﻤﻮﻋﺔ اﻷواﻣﺮ
ﻳﺴﺎويx اﻟﺘﻲ ﺳﺘﻨﻔﺬ إذا ﻛﺎن
……………………………
ﺳﺒﻌﺔ
……………………………. Break;
case 9: ﻫﻨﺎ ﻧﻜﺘﺐ ﻣﺠﻤﻮﻋﺔ اﻷواﻣﺮ
ﻳﺴﺎويx اﻟﺘﻲ ﺳﺘﻨﻔﺬ إذا ﻛﺎن
……………………………
ﺗﺴﻌﺔ
……………………………. Break;
}
segment
void segment(char kk) { switch(kk) { case 0 : portb=0b00111111; break;
case 1 : portb=0b00000110; break;
}
١٨٤
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
break;
x=5;
switch(x)
{
case 5 : portb=1; delay_ms(500);
case 1 : portb=3; delay_ms(500); break;
x
portb=1; delay_ms(500);
portb=3; delay_ms(500);
switchbreak
portb=4;
xbreak
١٨٥
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
switch .. case
default:
switch (x)
{ case 0: ……………………………
……………………………. Break;
case 1: ……………………………
……………………………. Break;
case 5:
……………………………………….
}
break
forswitch casebreak
loopwhile
while break
for
B0
B5A0
break
١٨٦
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
void main()
{char x;
ﻫﺬه ﺗﺴﻤﻰfor ﺟﻤﻠﺔ
trisa.f0=1; break ﻟﻮوب واﻷﻣﺮ
trisb=0;
ﻳﺨﺮج ﻣﻨﻬﺎ
إذا ﺗﻢ اﻟﻀﻐﻂ ﻋﻠﻰ اﻟﺴﻮﻳﺘﺶ ﻓﺴﻴﻘﻮم
break اﻟﻤﻴﻜﺮوﻛﻨﺘﺮوﻟﺮ ﺑﺘﻨﻔـﻴﺬ اﻷﻣﺮ
portb=0;
وﻳﻨﺘﻘﻞfor واﻟﺬي ﺳﻴﺨﺮج ﻣﻦ اﻟﻠﻮب
for(x=0;x<50;x++) { if(porta.f0==0) break;
portb.f0=1; delay_ms(100);
إﻟﻰ ﻣﺎ ﺑﻌﺪ اﻟﻠﻮب أي إﻟﻰ ﻫﻨﺎ
portb.f0=0; delay_ms(100);
}
Portb.f5=1;
Portb.f0=0;
}
break
for(x=0;x<100;x++) { ………………………………………………
for(y=0;x<100;x++)
{
ﺳﻴﺠﻌﻞbreak اﻷﻣﺮ
…………………..
اﻟﻤﻴﻜﺮو ﻳﻨﺘﻘﻞ إﻟﻰ ﻫﻨﺎ
…………………..
وﻟﻴﺲ إﻟﻰ ﻫﻨﺎ
Break;
}
…………………………………………………..
…………………………………………………….
}
……………………
١٨٧
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ﺍﻟﺘﺠﺮﺑﺔ
char x1,x2,x3,x4,x5;
char
char ahmad[100];
ahmad
ahmad[0]
ahmad[2]ahmad[1]
int mm[5];
١٨٨
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
mm[0]
intmm[4]mm[1]
Segment[0]
Segment[1]
Segment[2]
Segment[3]
Segment[4]
char
Segment[5]
Segment[6]
Segment[7]
Segment[8]
Segment[9]
١٨٩
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
char segment[10];
segment[8]=0
segment[0]=5;
segment[9]=10;
[ ]
for
void main()
ﻣﻜﻮﻧﺔ ﻣﻦ ﻋﺸﺮﻳﻦmm اﺣﺠﺰ ﻣﺼﻔﻮﻓﺔ اﺳﻤﻬﺎ
{ char x;
. char ﻋﻨﺼﺮ واﺟﻌﻠﻬﻢ ﺟﻤﻴﻌﺎ ﻣﻦ اﻟﻨﻮع
char mm[20];
ﻫﺬه ﺳﺘﻤﺮfor ﺟﻤﻠﺔ
for(x=0;x<20;x++) {
ﻋﻠﻰ ﺟﻤﻴﻊ ﻋﻨﺼﺎر
mm[x]=7; اﻟﻤﺼﻔﻮﻓﺔ وﺗﺠﻌﻠﻬﻢ
. ﺟﻤﻴﻌﺎ ﺑﺴﺒﻌﺔ
}
}
١٩٠
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
xforfor
mm[x]=7; for{ }
xmm[0]=7;
mm[x]=7; x
mm[1]=7;
mm[x]=7; x
x mm[2]
mm[2]=7; mm[1]=7; mm[0]=7;
mm[0]=7;
for(x=0;x<20;x++) {
mm[x]=7; mm[1]=7;
} mm[2]=7;
mm[3]=7;
mm[4]=7;
mm[5]=7;
………
……..
mm[19]=7;
١٩١
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
<<
mm[0] 7
<<
mm[1] 7
<<
mm[2] 7
<<
mm[3] 7
<<
.…………. .………….
………….. …………..
<<
mm[18] 7
mm[19] 7
<<
Char ayaa[10];
for(x=0;x<10;x++) ayaa[x]=200+x ;
{ }for
for char ayaa[10];
xfor
١٩٢
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ayaa[1]=200+1; x
ayaa[1]
Ashraf
Char Ashraf[13];
for(x=0;x<13;x++) Ashraf[x]=5*x ;
xfor
xAshraf[0]=0Ashraf[0]=5*0 ;for
xAshraf[1]=5*1 ;
Char kk[60];
for(x=0;x<30;x++) { kk[x*2]=4 ;
kk[(x*2)+1]=3 ;
}
١٩٣
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
x
Char Ashraf[4];
Ashraf[0]=5;
Ashraf[1]=10;
Ashraf[2]=100;
Ashraf[3]=20;
common cathode
00111111portb
00000110portb
١٩٤
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
portb=segment[0];
portb=segment[9];
void main( )
{
char segment [10]={0b00111111,0b00000110,0b01011011,0b01001111,0b01100110,0b01101101,
0b011111101,0b00000111,0b01111111,0b01101111};
char x;
trisb=0;
while(1) {
for(x=0;x<10;x++) { portb=segment[x];
delay_ms(500);
}
}
}
x portb=segment[x]; for
portb=0b00111111; portb=segment[0];
x
١٩٥
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
portb=0;
void main( )
{
char segment [10]={0b00111111,0b00000110,0b01011011,0b01001111,0b01100110,0b01101101,
0b011111101,0b00000111,0b01111111,0b01101111};
char x,y;
trisb=0;
while(1) {
for(x=9;x<255;x--) { portb=segment[x];
delay_ms(1000);
portb=segment[x];delay_ms(80);
}
Portb=0; delay_ms(200);
}
}
}
x
x for
Portb=0; delay_ms(200);
١٩٦
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
ﺍﻟﺘﺠﺮﺑﺔ
switch.. caseif
RAM
ROM
ROM RAM
ROM
ROM
PIC16f84a
6868x8RAM
17921024x14Program MemoryROM
١٩٧
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
switch.. case if
ROM
ROM RAM
ROMRAM
RAM
NO enough Ram
RAM
RAMROM
RAMROM
RAM
ROM
١٩٨
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
const
const
void main( ){
const char segment [10]={0b00111111,0b00000110,0b01011011,0b01001111,0b01100110,
0b01101101,0b011111101,0b00000111,0b01111111,0b01101111};
char x; trisb=0;
while(1) {
for(x=0;x<10;x++) { portb=segment[x];
delay_ms(1000);
}
}
}
RAM
١٩٩
ﺃﺳﺮﻉ ﻃﺮﻳﻖ ﻻﺣﺘﺮﺍﻑ ﺑﺮﻣﺠﺔ ﺍﻟﻤﺎﻳﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮ
hex
ROMRAM
١٦ ROM اﻟﻤﺴﺘﺨﺪم ﻣﻦ اﻟـ
ﻓـﻲ٨٤ ﻓـﻲ اﻟﻤﺌﺔ واﻟﻤﺘﺒﻘﻲ
ﻫﻮRAM اﻟﻤﺴﺘﺨﺪم ﻣﻦ اﻟـ
. اﻟﻤﺌﺔ ﻣﻦ اﻟﺤﺠﻢ اﻹﺟﻤﺎﻟﻲ
ﻓـﻲ اﻟﻤﺌﺔ واﻟﻤﺘﺒﻘﻲ ﺳﺒﻌﻴﻦ٣٠
. اﻟﻤﺌﺔ ﻓـﻲ
LED MATRIX
RAM
Const mm=19;
Const pp='A';
Const feleafel=1000;
٢٠٠