SlideShare uma empresa Scribd logo
1 de 175
Baixar para ler offline
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎﺕ‬
   ‫‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬
 ‫‪Programming‬‬
‫‪Microcontroller‬‬
         ‫‪AVR‬‬
         ‫‪With‬‬
            ‫‪C‬‬


  ‫ﺇﻋﺪﺍﺩ : ﺍﺳﻤﺎﻋﻴﻞ ﺍﻟﻄﺮﻭﺩﻱ‬




                    ‫اﻟﻔﺎرس ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب واﻹﺗﺼﺎﻻت‬
                  ‫ﺳﻮرﯾﺎ – ﺣﻤﺎه- ھـ-916922 33 369+‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬

                   ‫ﺑﺴﻢ ﺍﷲ ﺍﻟﺮﺣﻤﻦ ﺍﻟﺮﺣﻴﻢ‬
                   ‫ﺍﻟﻤﺘﺭﺠﻡ ﺍﻟﺫﻱ ﺴﻭﻑ ﻨﺴﺘﺨﺩﻤﻪ ﻤﻥ ﺃﺠل ﺒﻨﺎﺀ ﺍﻟﺘﻁﺒﻴﻘﺎﺕ ﺒﻠﻐﺔ ﺍﻟـ‪ C‬ﻫﻭ ‪CodeVision‬‬
                                              ‫ﺍﻟﺸﻜل )١( ﻴﻅﻬﺭ ﻟﻨﺎ ﺍﻟﻭﺍﺠﻬﺔ ﺍﻷﺴﺎﺴﻴﺔ ﻟﻬﺫﺍ ﺍﻟﻤﺘﺭﺠﻡ .‬




                         ‫ﺍﻟﺸﻜل)١( ﺍﻟﻭﺍﺠﻬﺔ ﺍﻷﺴﺎﺴﻴﺔ ﻟﺒﺭﻨﺎﻤﺞ ‪CodeVisionAVR‬‬


                   ‫ﻭﺃﻭل ﺨﻁﻭﺓ ﻟﻜﺘﺎﺒﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻫﻭ ﺇﻨﺸﺎﺀ ﻤﺸﺭﻭﻉ ﺠﺩﻴﺩ ، ﻴﻭﺠﺩ ﻁﺭﻴﻘﺘﻴﻥ ﻹﻨﺸﺎﺀ ﺍﻟﻤﺸﺭﻭﻉ.‬

                                                                     ‫ﺍﻟﻁﺭﻴﻘﺔ ﺍﻷﻭﻟﻰ :‬
‫١: ﻤﻥ ‪ File‬ﻨﺨﺘﺎﺭ ‪ New‬ﻭﻴﻅﻬﺭ ﻟﺩﻴﻨﺎ ﻤﺭﺒﻊ ﺍﻟﺤﻭﺍﺭ ﺍﻟﺸﻜل )٢( ﻨﺨﺘﺎﺭ ‪ Source‬ﻭﻨﺤﻔﻅـﻪ ﺒﺈﺴـﻡ ﺍﻟﻤـﺸﺭﻭﻉ‬
                                       ‫ﻭﻟﻴﻜﻥ ‪ Led‬ﻭﺴﻭﻑ ﻴﻘﻭﻡ ﺍﻟﻤﺘﺭﺠﻡ ﺒﺤﻔﻅﻪ ﺘﻠﻘﺎﺌﻴﹰ ﺒﺎﻤﺘﺩﺍﺩ ‪. Led.c‬‬
                                                       ‫ﺎ‬




                                      ‫ﺍﻟﺸﻜل)٢( ﺇﺨﺘﻴﺎﺭﺍﻟﻤﺼﺩﺭ‬




‫ﺒﻌﺩ ﺫﻟﻙ ﻨﻘﻭﻡ ﺒﺘﻜﺭﺍﺭ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﺴﺎﺒﻘﺔ" ﻤﻥ ‪ File‬ﻨﺨﺘﺎﺭ ‪ " New‬ﻭﻟﻜﻥ ﻨﺨﺘﺎﺭ ﻫﻨﺎ ‪ Project‬ﺍﻟﺸﻜل)٣( ﻭﻴﻅﻬـﺭ‬
‫ﺒﻌﺩ ﺫﻟﻙ ﻤﺭﺒﻊ ﺤﻭﺍﺭ ﻴﺘـﺴﺎﺌل ﻓﻴﻤـﺎ ﺇﺫﺍ ﻜﻨـﺎ ﻨﺭﻴـﺩ ﺍﺴـﺘﺨﺩﺍﻡ ﺨﺎﺼـﻴﺔ ﺘﻭﻟﻴـﺩ ﺍﻟﻜـﻭﺩ ﺘﻠﻘﺎﺌﻴـﹰ ﺒﺎﺴـﺘﺨﺩﺍﻡ‬
          ‫ﺎ‬
‫‪ CodeWizardAVR‬ﻨﺨﺘﺎﺭ ﻫﻨﺎ ‪ No‬ﺍﻟﺸﻜل )٤( ، ﻓﻴﻁﻠﺏ ﻤﻨﺎ ﺤﻔﻅ ﺍﻟﻤﺸﺭﻭﻉ ﻭﻨﺤﻔﻅﻪ ﺒﺄﻱ ﺍﺴﻡ ﻭﻟﻜﻥ ﻴﻔﻀل‬
‫ﺃﻥ ﻴﺤﺘﻭﻱ ﻋﻠﻰ ﺩﻻﻟﺔ ﻟﻠﻤﺸﺭﻭﻉ ﺍﻟﺫﻱ ﻴﺘﻡ ﺘﻁﺒﻴﻘﻪ ﻭﻟﻴﻜﻥ "‪ "Led‬ﺍﻟﺸﻜل )٥(، ﺒﻌﺩ ﺫﻟﻙ ﻴﻁﻠﺏ ﻤﻥ ﻤﻠﻑ ﺍﻟﻤـﺼﺩﺭ‬

                                                                 ‫ﺍﻟﻔﺎﺭﺱ ﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺤﺎﺴﻭﺏ ﻭﺍﻹﺘﺼﺎﻻﺕ‬
                                                              ‫ﺴﻭﺭﻴﺎ – ﺤﻤﺎﻩ- ﻫـ-916922 33 369+‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬

‫ﻟﻠﻤﺸﺭﻭﻉ ﺍﻟﻤﺭﺍﺩ ﺘﻁﺒﻴﻘﻪ ﺍﻟﺸﻜل)٦( ﻭﺒﺎﻟﻀﻐﻁ ﻋﻠﻰ ‪ Add‬ﻴﻅﻬﺭ ﻟﻨﺎ ﻤﺭﺒﻊ ﺤﻭﺍﺭ ﻨﺨﺘﺎﺭ ﻤﻨﻪ ﺍﻟﻤﻠـﻑ ﺍﻟﻤـﺼﺩﺭ‬
                                 ‫ﺍﻟﺫﻱ ﻗﺩ ﻗﻤﻨﺎ ﺒﺈﻨﺸﺎﺌﻪ ﻤﺴﺒﻘﹰ ﺍﻟﺸﻜل )٧( ﻭﻫﻭ "‪ " Led.c‬ﻭﻨﻀﻐﻁ ‪Open‬‬
                                                                   ‫ﺎ‬




                                     ‫اﻟﺸﻜﻞ)٣( إﺧﺘﯿﺎراﻟﻤﺸﺮوع‬




                                ‫اﻟﺸﻜﻞ)٤( إﺧﺘﯿﺎرﻃﺮﯾﻘﺔ ﺑﻨﺎء اﻟﻤﺸﺮوع‬




                                   ‫اﻟﺸﻜﻞ )٥(ﺣﻔﻆ ﻣﻠﻒ اﻟﻤﺸﺮوع‬




                                                                    ‫ﺍﻟﻔﺎﺭﺱ ﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺤﺎﺴﻭﺏ ﻭﺍﻹﺘﺼﺎﻻﺕ‬
                                                              ‫ﺴﻭﺭﻴﺎ – ﺤﻤﺎﻩ- ﻫـ-916922 33 369+‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬




‫اﻟﺸﻜﻞ )٦ ﺗﺤﺪﯾﺪ اﻟﻤﻠﻒ اﻟﻤﺼﺪر ﻟﻠﻤﺸﺮوع‬




    ‫اﻟﺸﻜﻞ )٧( ﺗﺤﺪﯾﺪ ﻣﻠﻒ اﻟﻤﺼﺪر‬




                                  ‫ﺍﻟﻔﺎﺭﺱ ﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺤﺎﺴﻭﺏ ﻭﺍﻹﺘﺼﺎﻻﺕ‬
                             ‫ﺴﻭﺭﻴﺎ – ﺤﻤﺎﻩ- ﻫـ-916922 33 369+‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬

                                                                         ‫اﻟﻄﺮﯾﻘﺔ اﻟﺜﺎﻧﯿﺔ :‬
‫ﻤﻥ ‪ File‬ﻨﺨﺘﺎﺭ ‪ New‬ﺜﻡ ﻨﺨﺘﺎﺭ ‪ Project‬ﻓﻴﻅﻬﺭ ﻤﺭﺒﻊ ﺍﻟﺤﻭﺍﺭ ﺍﻟﺴﺎﺒﻕ ﺍﻟﺸﻜل)٤( ﻭﻨﺨﺘﺎﺭ ‪ Yes‬ﻓﻴﻅﻬـﺭ ﻟﻨـﺎ‬
‫ﻤﺭﺒﻊ ﺍﻟﺤﻭﺍﺭ ﺍﻟﺸﻜل )٨( ﻭﻀﻤﻨﻪ ﻨﺴﺘﻁﻴﻊ ﺃﻥ ﻨﻘﻭﻡ ﺒﺘﺤﺩﻴﺩ ﻜﺜﻴﺭ ﻤﻥ ﺍﻷﻤﻭﺭ ﻤﺜـل ﺍﻟﺤﺎﻟـﺔ ﺍﻟﺒﺩﺍﺌﻴـﺔ ﻟﻠﻤـﺩﺍﺨل‬
‫ﺍﻟﺩﺨل/ﺨﺭﺝ ﻭﻨﺴﺘﻁﻴﻊ ﺘﺤﺩﻴﺩ ﻨﻤﻁ ﻋﻤل ﺍﻟﻤﺅﻗﺘﺎﺕ ﺃﻭ ﺘﺤﺩﻴﺩ ﺍﻟﺒﻭﺍﺒﺔ ﺍﻟﺘﻲ ﺴـﻭﻑ ﻨﻘـﻭﻡ ﺒﻭﺼـﻠﻬﺎ ﻤـﻊ ﺸﺎﺸـﺔ‬
‫ﺍﻟـ ‪ LCD‬ﻭﻜﺜﻴﺭ ﻤﻥ ﺍﻷﻤﻭﺭ ﺍﻟﺘﻲ ﺴﻭﻑ ﻨﺘﻁﺭﻕ ﻟﻬﺎ ﻻﺤﻘﹰ ، ﺒﻌﺩ ﺃﻥ ﻨﺨﺘﺎﺭ ﻫﺫﻩ ﺍﻷﻤﻭﺭ ﻨﺨﺘـﺎﺭ ‪" File‬ﻤـﻥ‬
                                          ‫ﺎ‬
‫ﻤﺭﺒﻊ ﺍﻟﺤﻭﺍﺭ " ﻭﻨﺨﺘﺎﺭ ﺒﻌﺩ ﺫﻟﻙ ‪ Generate Save and Exit‬ﻓﻴﻁﻠﺏ ﻤﻨﺎ ﻓﻲ ﺍﻟﺒﺩﺍﻴـﺔ ﺘﺤﺩﻴـﺩ ﺍﺴـﻡ ﻤﻠـﻑ‬
‫ﺍﻟﻤﺼﺩﺭ ﺜﻡ ﺍﺴﻡ ﻤﻠﻑ ﺍﻟﻤﺸﺭﻭﻉ ﻭﺒﻌﺩﻫﺎ ﺍﺴﻡ ﻤﻠﻑ ﺍﻟﺘﻭﻟﻴﺩ ﺍﻷﻭﺘﻭﻤﺎﻨﻴﻜﻲ ﻟﻬﺫﺍ ﺍﻟﻤﺸﺭﻭﻉ ﻭﻴﻔﻀل ﺃﻥ ﺴﻜﻭﻥ ﺠﻤﻴـﻊ‬
                                                                               ‫ﻫﺫﻩ ﺍﻷﺴﻤﺎﺀ ﻤﺘﺸﺎﺒﻬﺔ .‬




                               ‫اﻟﺸﻜﻞ)٨( ﺗﺠﮭﯿﺰ اﻹﻋﺪادات اﻷوﻟﯿﺔ ﻟﻠﻤﺸﺮوع‬


 ‫ﻭﻨﻼﺤﻅ ﺒﻌﺩ ﺫﻟﻙ ﻓﻲ ﻜﻠﺘﺎ ﺍﻟﻁﺭﻴﻘﺘﻴﻥ ﻭﺠﻭﺩ ﻤﻠﻔﻴﻥ ﺍﻷﻭل ﻫﻭ ﻤﻠﻑ ﺍﻟﻤﺼﺩﺭ ﻭﺍﺴﻤﻪ ﻜﻤـﺎ ﺘـﻡ ﺍﺨﺘﻴـﺎﺭﻩ ‪Led.c‬‬
‫ﺍﻟﺸﻜل)٩( ﻭﺍﻟﺜﺎﻨﻲ ﻤﻠﻑ ﺍﻟﻤﻼﺤﻅﺎﺕ ﺤﻭل ﺍﻟﻤﺸﺭﻭﻉ ﺍﻟﺫﻱ ﻨﺤﻥ ﺒﺼﺩﺩ ﻜﺘﺎﺒﺔ ﺒﺭﻨﺎﻤﺠﻪ ﺍﻟﺸﻜل )٠١( ﻤﺜـل ﻋـﺩﺩ‬
               ‫ﺍﻟﻤﺩﺍﺨل ﻭﺍﻟﻤﺨﺎﺭﺝ ﻭﺃﺸﻴﺎﺀ ﺘﺘﻌﻠﻕ ﺒﺎﻟﻤﺸﺭﻭﻉ ﻭﻟﻴﺱ ﻟﻬﺫ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺃﻱ ﺩﻭﺭ ﻓﻲ ﻜﺘﺎﺒﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ.‬




                                                                   ‫ﺍﻟﻔﺎﺭﺱ ﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺤﺎﺴﻭﺏ ﻭﺍﻹﺘﺼﺎﻻﺕ‬
                                                             ‫ﺴﻭﺭﻴﺎ – ﺤﻤﺎﻩ- ﻫـ-916922 33 369+‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬




 ‫اﻟﺸﻜﻞ )٩( ﻣﻠﻒ اﻟﻤﺼﺪر‬




‫اﻟﺸﻜﻞ )٠١( ﻣﻠﻒ اﻟﻤﻼﺣﻈﺎت‬




                            ‫ﺍﻟﻔﺎﺭﺱ ﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺤﺎﺴﻭﺏ ﻭﺍﻹﺘﺼﺎﻻﺕ‬
                        ‫ﺴﻭﺭﻴﺎ – ﺤﻤﺎﻩ- ﻫـ-916922 33 369+‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬


                                 ‫ﺒﺭﻨﺎﻤﺞ ﺍﻟﻤﺤﺎﻜﺎﺓ‬
                                    ‫‪Proteus‬‬

‫ﻴﻭﺠﺩ ﻫﻨﺎﻙ ﺍﻟﻌﺩﻴﺩ ﻤﻥ ﺒﺭﺍﻤﺞ ﺍﻟﻤﺤﺎﻜﺎﺓ ﺍﻟﻤﺴﺘﺨﺩﻤﺔ ﻟﻤﺤﺎﻜﺎﺓ ﺍﻟﺩﺍﺭﺍﺕ ﺍﻹﻟﻜﺘﺭﻭﻨﻴﺔ ﻭﻟﻜﻥ ﺍﻷﻓﻀل ﻭﺍﻷﺭﻭﻉ ﻓﻲ ﻫﺫﺍ‬
‫ﺍﻟﻤﺠﺎل ﻫﻭ ﺒﺭﻨﺎﻤﺞ ‪ Proteus‬ﺍﻟﺫﻱ ﻴﺘﺼﻑ ﺒﺎﻟﺩﻗﺔ ﻭﺍﻟﺴﻬﻭﻟﺔ ﻓﻲ ﻤﺤﺎﻜﺎﺓ ﺍﻟﻤﺸﺎﺭﻴﻊ ﻭﺨﺼﻭﺼﺎ ً ﺃﻨـﻪ ﻴﺤﺘـﻭﻱ‬
‫ﻋﻠﻰ ﻤﻜﺎﺘﺏ ﻜﺜﻴﺭﺓ ﻟﻜﺎﻓﺔ ﺍﻟﻘﻁﻊ ﺍﻹﻟﻜﺘﺭﻭﻨﻴﺔ ﻭﻫﻭ ﻴﺴﺘﻁﻴﻊ ﺃﻥ ﻴﺤﺎﻜﻲ ﺍﻟﺩﺍﺭﺍﺕ ﺍﻟﺘﻲ ﺘﺤﺘﻭﻱ ﻋﻠـﻰ ﺍﻟﻤﺘﺤﻜﻤـﺎﺕ‬
‫‪ Microcontroller‬ﺒﺴﻬﻭﻟﺔ ﺠﺩﺍ ً ﻤﻤﺎ ﻴﺘﻴﺢ ﻟﻠﻤﺼﻤﻡ ﺒﺄﻥ ﻴﺨﺘﺒﺭ ﻋﻤل ﺍﻟﻤﺘﺤﻜﻡ ﻗﺒل ﺃﻥ ﻴﺘﻡ ﺤﻘﻥ ﺍﻟﺒﺭﻨـﺎﻤﺞ ﻓـﻲ‬
‫ﺍﻟﻤﺘﺤﻜﻡ ﻤﻤﺎ ﺴﻬل ﻋﻤﻠﻴﺔ ﺍﻟﺘﻁﻭﻴﺭ ﻓﻲ ﺍﻟﺒﺭﺍﻤﺞ ﺒﺴﻬﻭﻟﺔ ﻭﺇﻀﺎﻓﺔ ﻟﺫﻟﻙ ﻴﺴﺘﻁﻴﻊ ﺍﻟﻤﺘﺩﺭﺏ ﺃﻭ ﺍﻟﺫﻱ ﻴﺩﺭﺱ ﺒﺭﻤﺠـﺔ‬
            ‫ﺍﻟﻤﺘﺤﻜﻤﺎﺕ ﺃﻥ ﻴﺘﻡ ﺇﺨﺘﺒﺎﺭ ﺒﺭﺍﻤﺠﻪ ﻭﻴﻌﺩل ﻋﻠﻴﻬﺎ ﺩﻭﻥ ﺃﻥ ﻴﺘﻡ ﺘﻁﺒﻴﻘﻬﺎ ﻭﺍﻟﺘﻲ ﺘﻜﻠﻑ ﺒﺎﻟﻨﺴﺒﺔ ﻟﻠﻁﺎﻟﺏ .‬
                                                         ‫ﻓﻲ ﺍﻟﺒﺩﺍﻴﺔ ﺴﻭﻑ ﻨﺘﻌﺭﻑ ﻋﻠﻰ ﻭﺍﺠﻬﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ :‬




                                                                             ‫ﺍﻟﻭﺍﺠﻬﺔ ﺍﻟﺭﺌﻴﺴﻴﺔ ﻟﻠﺒﺭﻨﺎﻤﺞ‬



‫ﻭﺴﻭﻑ ﻨﺘﻌﻠﻡ ﻋﻠﻰ ﺃﻫﻡ ﺍﻟﻤﻜﺘﺒﺎﺕ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻲ ﺍﻟﺒﺩﺍﻴﺔ ﻤﻥ ﺃﺠل ﺠﻠﺏ ﺍﻟﻌﻨﺎﺼﺭ ﺍﻟﺘﻲ ﻨﺭﻴﺩﻫﺎ ﻓﻲ ﺍﻟﻤﺸﺭﻭﻉ ﻨﻨﻘـﺭ‬
                                                        ‫ﺒﺎﻟﻤﺅﺸﺭ ﻋﻠﻰ ﺍﻷﻴﻘﻭﻨﺔ ﺍﻟﻤﻭﻀﺤﺔ ﺒﺎﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ :‬

                                                                 ‫ﺍﻟﻔﺎﺭﺱ ﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺤﺎﺴﻭﺏ ﻭﺍﻹﺘﺼﺎﻻﺕ‬
                                                            ‫ﺴﻭﺭﻴﺎ – ﺤﻤﺎﻩ- ﻫـ-916922 33 369+‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬




‫ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻲ ﺃﻗﺼﻰ ﺍﻟﻴﺴﺎﺭ .‬   ‫ﻓﻲ ﺤﺎل ﻋﺩﻡ ﻅﻬﻭﺭ ﻫﺫﻩ ﺍﻹﺸﺎﺭﺓ ﻴﺠﺏ ﺃﻥ ﻴﻜﻭﻥ ﻤﻀﻐﻭﻁ ﻋﻠﻰ ﺍﻷﻴﻘﻭﻨﺔ‬
                                                           ‫ﻭﺒﻌﺩﻫﺎ ﺘﻅﻬﺭ ﻟﻨﺎ ﻭﺍﺠﻬﺔ ﺍﻟﻤﻜﺘﺒﺔ‬




                                                     ‫ﺍﻟﻔﺎﺭﺱ ﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺤﺎﺴﻭﺏ ﻭﺍﻹﺘﺼﺎﻻﺕ‬
                                                 ‫ﺴﻭﺭﻴﺎ – ﺤﻤﺎﻩ- ﻫـ-916922 33 369+‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬

‫ﻭﻨﻼﺤﻅ ﻭﺠﻭﺩ ﻤﺭﺒﻊ ﻟﻠﺒﺤﺙ ﻋﻥ ﺍﻟﻌﻨﺼﺭ ﺍﻹﻟﻜﺘﺭﻭﻨﻲ ﺍﻟﺫﻱ ﻨﺭﻴﺩﻩ ﻓﻨﺨﺘﺎﺭ ﺍﻟﻌﻨﺎﺼﺭ ﻤﻥ ﻫﺫﻩ ﺍﻟﻤﻜﺘﺒﺔ ﺜـﻡ ﻨﻐﻠﻘﻬـﺎ‬
                                                    ‫ﻭﻨﻼﺤﻅ ﻭﺠﻭﺩ ﻫﺫﻩ ﺍﻟﻌﻨﺎﺼﺭ ﻓﻲ ﻗﺎﺌﻤﺔ ﺍﻷﺠﻬﺯﺓ .‬


                                                                        ‫ﺤﻘﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻓﻲ ﺍﻟﻤﺘﺤﻜﻡ :‬
             ‫ﻤﻥ ﺃﺠل ﺤﻘﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻓﻲ ﺍﻟﻤﺘﺤﻜﻡ ﻨﻀﻐﻁ ﻤﺭﺘﻴﻥ ﻋﻠﻰ ﺍﻟﻤﺘﺤﻜﻡ ﻓﺘﻅﻬﺭ ﻟﻨﺎ ﻤﺭﺒﻊ ﺍﻟﺤﻭﺍﺭﺍﻟﺘﺎﻟﻲ :‬




‫ﻭﺒﺎﻟﻀﻐﻁ ﻋﻠﻰ ﺍﻟﻤﺠﻠﺩ ﻴﻅﻬﺭ ﻟﻨﺎ ﻤﺭﺒﻊ ﻴﻁﻠﺏ ﻤﻨﺎ ﻤﺴﺎﺭ ﻤﻠﻑ ﺍﻟﻤﺸﺭﻭﻉ ﻭﻫﻭ ﺒﺎﻤﺘﺩﺍﺩ ‪ .hex‬ﻭﺍﻟﺫﻱ ﻴﺘﻭﻟـﺩ ﺃﺜﻨـﺎﺀ‬
                  ‫ﻋﻤﻠﻴﺔ ﺍﻟﺘﺭﺠﻤﺔ ‪ Compile‬ﻟﻠﻤﺸﺭﻭﻉ ﻭﻴﻜﻭﻥ ﺒﻨﻔﺱ ﺍﻟﻤﺴﺎﺭ ﺍﻟﺫﻱ ﺤﻔﻅﻨﺎ ﻓﻴﻪ ﻫﺫﺍ ﺍﻟﻤﺸﺭﻭﻉ .‬
                        ‫ﻤﻼﺤﻅﺔ : ﻴﻔﻀل ﺤﻔﻅ ﺍﻟﻤﺸﺭﻭﻉ ﻋﻠﻰ ﺍﻟﺴﻭﺍﻗﺔ ‪ C‬ﻤﻥ ﺃﺠل ﺴﻬﻭﻟﺔ ﻋﻤﻠﻴﺔ ﺍﻟﻤﺤﺎﻜﺎﺓ .‬




                                                              ‫ﺍﻟﻔﺎﺭﺱ ﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺤﺎﺴﻭﺏ ﻭﺍﻹﺘﺼﺎﻻﺕ‬
                                                         ‫ﺴﻭﺭﻴﺎ – ﺤﻤﺎﻩ- ﻫـ-916922 33 369+‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬


              ‫3132‪AT90S‬‬                          ‫‪‬‬
‫‪Features‬‬                                                                                     ‫اﻟﻤﺰاﯾﺎ‬
                             ‫ﻴﺘﻤﺘﻊ ﺍﻟﻤﺘﺤﻜﻡ )‪ AT90S2313 (MCU‬ﺒﺎﻟﻤﺯﺍﻴﺎ ﻭ ﺍﻟﻤﻭﺍﺼﻔﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ :‬
                                     ‫• ﺍﺴﺘﺨﺩﻤﺕ ﻋﺎﺌﻠﺔ ‪ AVR‬ﻤﺯﺍﻴﺎ ﺒﻨﻴﺔ ‪ RISC‬ﺍﻟﻤﺤﺴﻨﺔ .‬
                         ‫• ﺘﺘﻤﺘﻊ ﻋﺎﺌﻠﺔ ‪ AVR‬ﺒﺎﻷﺩﺍﺀ ﺍﻟﻌﺎﻟﻲ ﻭﺒﻁﺎﻗﺔ ﺒﻨﻴﺔ ‪ RISC‬ﺍﻟﻤﻨﺨﻔﻀﺔ .‬
              ‫• ﺘﺤﺘﻭﻱ ﻗﺎﺌﻤﺔ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻋﻠﻰ 021 ﺘﻌﻠﻴﻤﺔ ، ﻴﻨﻔﺫ ﻤﻌﻅﻤﻬﺎ ﺨﻼل ﺩﻭﺭﺓ ﺁﻟﺔ ﻭﺍﺤﺩﺓ .‬
           ‫• ﺫﺍﻜﺭﺓ ﺒﺭﻨﺎﻤﺞ ﻭﻤﻴﻀﻴﺔ ﻤﺒﻨﻴﺔ ﺩﺍﺨل ﺍﻟﺸﺭﻴﺤﺔ ﺤﺠﻤﻬﺎ ‪ 2Kbyte‬ﻗﺎﺒﻠﺔ ﻹﻋﺎﺩﺓ ﺍﻟﺒﺭﻤﺠﺔ .‬
                                                          ‫- ﻨﺎﻓﺫﺓ ﺘﺴﻠﺴﻠﻴﺔ ‪ SPI‬ﻟﺘﺤﻤﻴل ﺍﻟﺒﺭﻨﺎﻤﺞ .‬
                                                           ‫- ﺍﻟﺩﻴﻤﻭﻤﺔ : 0001 ﺩﻭﺭﺓ ﻜﺘﺎﺒﺔ/ﻤﺴﺢ .‬
                                        ‫ﺫﺍﻜﺭﺓ ﻤﻌﻁﻴﺎﺕ ‪ EEPROM‬ﺒﻁﻭل ‪. 128bytes‬‬                      ‫•‬
                                              ‫- ﺍﻟﺩﻴﻤﻭﻤﺔ :001، 000 ﺩﻭﺭﺓ ﻜﺘﺎﺒﺔ / ﻤﺴﺢ .‬
                                         ‫ﺫﺍﻜﺭﺓ ﻤﻌﻁﻴﺎﺕ ﺩﺍﺨﻠﻴﺔ ‪ RAM‬ﺒﻁﻭل ‪. 128byte‬‬                  ‫•‬
                                            ‫ﺍﺜﻨﺎﻥ ﻭ ﺜﻼﺜﻭﻥ ﻤﺴﺠل ﻋﻤل ﻟﻺﻏﺭﺍﺽ ﺍﻟﻌﺎﻤﺔ .‬               ‫•‬
                                                  ‫ﺨﻤﺴﺔ ﻋﺸﺭﺓ ﻗﻁﺏ ‪ I/O‬ﻗﺎﺒﻠﺔ ﻟﻠﺒﺭﻤﺠﺔ .‬              ‫•‬
                                          ‫‪. Vcc = 2.7 – 6.0V‬‬          ‫:‬        ‫ﺠﻬﺩ ﺍﻟﺘﻐﺫﻴﺔ‬       ‫•‬
                                         ‫: ‪. Fck = 0 – 20MHz‬‬              ‫ﻤﺠﺎل ﻋﻤل ﺍﻟﻬﺯﺍﺯ‬        ‫•‬
                                         ‫‪ 50ns‬ﻋﻨﺩ ‪. 20MHz‬‬            ‫ﺯﻤﻥ ﺩﻭﺭﺓ ﺍﻟﺘﻌﻠﻴﻤﺔ :‬         ‫•‬
                                    ‫ﻤﺅﻗﺕ/ﻋﺩﺍﺩ ﺒﻁﻭل ‪ 8-bit‬ﺒﻤﻘﺴﻡ ‪ prescaler‬ﻤﻨﻔﺼل .‬                 ‫•‬
                                 ‫ﻤﺅﻗﺕ/ﻋﺩﺍﺩ ﺒﻁﻭل ‪ 16-bit‬ﺒﻤﻘﺴﻡ ‪ prescaler‬ﻤﻨﻔﺼل .‬                   ‫•‬
                                                    ‫ﺒﺄﻨﻤﺎﻁ ﺍﻟﻤﻘﺎﺭﻨﺔ ﻭ ﺍﻟﻤﺴﻙ ‪. capture‬‬            ‫•‬
                                                      ‫ﻨﺎﻓﺫﺓ ﺘﺴﻠﺴﻠﻴﺔ ﺜﻨﺎﺌﻴﺔ ﺍﻻﺘﺠﺎﻩ ‪. UART‬‬         ‫•‬
                                 ‫ﺨﺭﺝ ‪ PWM‬ﻗﺎﺒل ﻟﻠﺒﺭﻤﺠﺔ ﺒﺜﻤﺎﻥ ﺃﻭ ﺘﺴﻊ ﺃﻭ ﻋﺸﺭﺓ ﺨﺎﻨﺎﺕ .‬               ‫•‬
                                                         ‫ﻤﺼﺎﺩﺭ ﺍﻟﻤﻘﺎﻁﻌﺔ ﺩﺍﺨﻠﻴﺔ ﻭ ﺨﺎﺭﺠﻴﺔ.‬         ‫•‬
                       ‫ﻤﺅﻗﺕ ﻤﺭﺍﻗﺒﺔ ‪ watchdog‬ﻗﺎﺒل ﻟﻠﺒﺭﻤﺠﺔ ﺩﺨﻠﻪ ﻤﻥ ﺍﻟﻬﺯﺍﺯ ‪ RC‬ﺍﻟﺩﺍﺨﻠﻲ .‬             ‫•‬
                                                        ‫ﻤﻘﺎﺭﻥ ﺘﺸﺎﺒﻬﻲ ﻤﺒﻨﻲ ﺩﺍﺨل ﺍﻟﺸﺭﻴﺤﺔ.‬          ‫•‬
                                  ‫ﺃﻨﻤﺎﻁ ﻟﺘﻭﻓﻴﺭ ﺍﻟﻁﺎﻗﺔ : ﻨﻤﻁ ﺍﻟﺒﻁﺎﻟﺔ ، ﻭ ﻨﻤﻁ ﺍﻟﻁﺎﻗﺔ ﺍﻟﺘﺤﺘﻴﺔ .‬     ‫•‬
                                                             ‫ﺃﻗﻔﺎل ﺒﺭﻤﺠﻴﺔ ﻟﺤﻤﺎﻴﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ .‬      ‫•‬
                                                               ‫ﺸﺭﻴﺤﺔ ﺫﺍﺕ ﻋﺸﺭﻴﻥ ﻗﻁﺒﺎ.‬
                                                                ‫ﹰ‬                                ‫•‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬


    ‫‪Pin Configuration‬‬                                                                      ‫أﻗﻄﺎب اﻟﺘﺤﻜﻢ‬
                                                                 ‫ﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﺃﻗﻁﺎﺏ ﺍﻟﻤﺘﺤﻜﻡ 3132‪AT90S‬‬




                                        ‫أﻗﻄﺎب اﻟﺘﺤﻜﻢ 3132‪AT90S‬‬


  ‫‪Pin Description‬‬                                                                      ‫ﺸﺭﺡ ﺃﻗﻁﺎﺏ ﺍﻟﻤﺘﺤﻜﻡ‬

                                                                                                       ‫‪:Vcc‬‬
                                                                 ‫ﻗﻁﺏ ﺠﻬﺩ ﺍﻟﺘﻐﺫﻴﺔ ﺍﻟﻤﻭﺠﺏ ‪Vcc = 2.7 – 6.0V‬‬
                                                                                                     ‫‪:GND‬‬
                                                                        ‫ﻗﻁﺏ ﺠﻬﺩ ﺍﻟﺘﻐﺫﻴﺔ ﺍﻟﺼﻔﺭﻱ ‪GND = 0V‬‬


                                                                     ‫ﺍﻟﻨﺎﻓﺫﺓ ) 0‪: Port B ( PB7 …… PB‬‬
‫ﻭﻫﻲ ﻋﺒﺎﺭﺓ ﻋﻥ ﻨﺎﻓﺫﺓ ‪ I/O‬ﺫﺍﺕ ﺜﻤﺎﻨﻴﺔ ﺃﻗﻁﺎﺏ ﺜﻨﺎﺌﻴﺔ ﺍﻻﺘﺠﺎﻩ ﻤﺯﻭﺩﺓ ﺒﺘﺭﺍﻨﺯﻴﺴﺘﻭﺭ ﺭﻓﻊ ﺩﺍﺨﻠﻲ ، ﻭﺤﻴﺙ ﺃﻨﻨﺎ ﻨﺴﺘﻁﻴﻊ ﺍﺴﺘﺨﺩﺍﻡ‬
‫ﺍﻟﻘﻁﺒﻴﻥ 0‪ PB‬ﻭ 1‪ PB‬ﺃﻴﻀﺎ ﻜﻤﺩﺨل ﻤﻭﺠﺏ )0‪ (AIN‬ﻭ ﻤﺩﺨل ﺴﺎﻟﺏ )1‪ (AIN‬ﻋﻠﻰ ﺍﻟﺘﺭﺘﻴﺏ ﻟﻠﻤﻘﺎﺭﻥ ﺍﻟﺘﺸﺎﺒﻬﻲ ﺍﻟﻤﺒﻨﻲ‬
                                                                         ‫ﹰ‬
                                                                                  ‫ﻋﻠﻰ ﺸﺭﻴﺤﺔ ﺍﻟﻤﺘﺤﻜﻡ ‪. MCU‬‬
               ‫ﺘﺘﻤﺘﻊ ﺍﻟﻨﺎﻓﺫﺓ ‪ B‬ﺒﻤﺯﺍﻴﺎ ﺃﺨﺭﻯ ﺨﺎﺼﺔ ﺒﻌﻤل ﺍﻟﻤﺘﺤﻜﻡ ‪ MCU‬ﻭﻫﻲ ﻤﺸﺭﻭﺤﺔ ﻓﻲ ﻓﻘﺭﺓ " ﻨﻭﺍﻓﺫ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ " .‬
                                                                    ‫ﺍﻟﻨﺎﻓﺫﺓ ) 0‪: Port D ( PD6 …… PD‬‬
‫ﻭﻫﻲ ﻋﺒﺎﺭﺓ ﻋﻥ ﻨﺎﻓﺫﺓ ‪ I/O‬ﺫﺍﺕ ﺴﺒﻌﺔ ﺃﻗﻁﺎﺏ ﺜﻨﺎﺌﻴﺔ ﺍﻻﺘﺠﺎﻩ ﻤﺯﻭﺩﺓ ﺒﺘﺭﺍﻨﺯﻴﺴﺘﻭﺭ ﺭﻓﻊ ﺩﺍﺨﻠـﻲ ، ﻭﺘﺘﻤﺘـﻊ ﺍﻟﻨﺎﻓـﺫﺓ ‪ D‬ﺒﻤﺯﺍﻴـﺎ‬
                             ‫ﺃﺨﺭﻯ ﺨﺎﺼﺔ ﺒﻌﻤل ﺍﻟﻤﺘﺤﻜﻡ 3132‪ AT90S‬ﻭﻫﻲ ﻤﺸﺭﻭﺤﺔ ﻓﻲ ﻓﻘﺭﺓ "ﻨﻭﺍﻓﺫ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ".‬
                                                                                   ‫ﻗﻁﺏ ﺍﻟﺘﺼﻔﻴﺭ ‪: RESET‬‬
‫ﻤﺩﺨل ﺍﻟﺘﺼﻔﻴﺭ . ﻋﻨﺩ ﺘﻁﺒﻴﻕ ﺇﺸﺎﺭﺓ ﻜﻬﺭﺒﺎﺌﻴﺔ ﺫﺍﺕ ﻤﻨﻁﻕ ﻤﻨﺨﻔﺽ ﻋﻠﻰ ﺍﻟﻘﻁﺏ ‪ RESET‬ﻟﻤﺩﺓ ﺩﻭﺭﺘﻲ ﺁﻟﺔ ﺃﺜﻨﺎﺀ ﻋﻤل ﻫﺯﺍﺯ‬
                                           ‫ﺍﻟﺸﺭﻴﺤﺔ ، ﻓﺈﻥ ﺩﺍﺭﺓ ﺍﻟﺘﺼﻔﻴﺭ ﺍﻟﺩﺍﺨﻠﻴﺔ ﺘﻌﻤل ﻋﻠﻰ ﺘﺼﻔﻴﺭ ﺍﻟﻤﺘﺤﻜﻡ ‪. MCU‬‬
                                                                                   ‫1‪: XTAL‬‬       ‫ﻤﺩﺨل ﺍﻟﻬﺯﺍﺯ‬
                          ‫ﻫﻭ ﻋﺒﺎﺭﺓ ﻋﻥ ﻤﺩﺨل ﻟﻤﻀﺨﻡ ﺍﻟﻬﺯﺍﺯ ﺍﻟﻌﺎﻜﺱ ﻭﻫﻭ ﺃﻴﻀﺎ ﻤﺩﺨل ﻟﺩﺍﺭﺓ ﺘﺸﻐﻴل ﺍﻟﺴﺎﻋﺔ ﺍﻟﺩﺍﺨﻠﻴﺔ .‬
                                                             ‫ﹰ‬
                                                                                   ‫2‪: XTAL‬‬       ‫ﻤﺩﺨل ﺍﻟﻬﺯﺍﺯ‬
                                                                   ‫ﻫﻭ ﻋﺒﺎﺭﺓ ﻋﻥ ﻤﺨﺭﺝ ﻟﻤﻀﺨﻡ ﺍﻟﻬﺯﺍﺯ ﺍﻟﻌﺎﻜﺱ .‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬

                                                                        ‫ﻟﻤﺤﺔ ﺒﻨﻴﻭﻴﺔ ﻋﻥ ﺍﻟﻤﺘﺤﻜﻡ 3132‪: AT90S‬‬
‫ﻟﻘﺩ ﺍﻋﺘﻤﺩﺕ ﻤﺘﺤﻜﻤﺎﺕ ‪ AVR‬ﻤﻔﻬﻭﻡ ﺒﻨﻴﺔ ﻫﺎﺭﻓﺎﺭﺩ ‪ Harvard‬ﺍﻟﺘﻲ ﺘﻌﻨﻭﻥ ﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻭ ﺫﺍﻜﺭﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺒﺨﻁﻭﻁ‬
‫ﻤﻨﻔﺼﻠﺔ ) ﻋﻠﻰ ﺨﻼﻑ ﺍﻟﺒﻨﻴﺔ ﺍﻟﺘﻲ ﻭﻀﻌﻬﺎ ﺍﻟﻌﺎﻟﻡ ﻓﻭﻥ ﻨﻭﻴﻤﺎﻥ ﻓﻲ ﻤﺫﻜﺭﺘﻪ ( . ﺤﻴﺙ ﻴﺘﻡ ﺍﻟﻭﻟﻭﺝ ﻟﺫﺍﻜﺭﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺒﺩﻭﺭﺓ ﻤﻤﺭ‬
‫ﻭﺍﺤﺩﺓ . ﻓﻌﻨﺩﻤﺎ ﺘﺒﺩﺃ ﻭﺤﺩﺓ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﺭﻜﺯﻴﺔ ‪ CPU‬ﺒﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻷﻭﻟﻰ ، ﻓﺈﻨﻪ ﻴﺘﻡ ﺇﺤﻀﺎﺭ ﺸﻴﻔﺭﺓ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﺎﻟﻴﺔ ﻤﻥ ﺫﺍﻜﺭﺓ‬
‫ﺍﻟﺒﺭﻨﺎﻤﺞ ، ﻭ ﺒﺎﻟﺘﺎﻟﻲ ﺃﺩﺕ ﻫﺫﻩ ﺍﻟﺒﻨﻴﺔ ﺇﻟﻰ ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺒﺩﻭﺭﺓ ﺴﺎﻋﺔ ﻭﺍﺤﺩﺓ . ﻭﻨﺫﻜﺭ ﻫﻨﺎ ﺃﻥ ﺫﺍﻜﺭﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻫﻲ ﺫﺍﻜﺭﺓ‬
                                               ‫ﻭﻤﻴﻀﻴﺔ ‪ Flash‬ﻗﺎﺒﻠﺔ ﻹﻋﺎﺩﺓ ﺍﻟﺒﺭﻤﺠﺔ ﻤﺒﻨﻴﺔ ﻋﻠﻰ ﺸﺭﻴﺤﺔ ﺍﻟﻤﺘﺤﻜﻡ ‪. MCU‬‬
‫ﺘﺩﻋﻡ ﻭﺤﺩﺓ ﺍﻟﺤﺴﺎﺏ ﻭ ﺍﻟﻤﻨﻁﻕ ‪ ALU‬ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﺤﺴﺎﺒﻴﺔ ﻭ ﺍﻟﻤﻨﻁﻘﻴﺔ ﺒﻴﻥ ﺍﻟﻤﺴﺠﻼﺕ ﺃﻭ ﺒﻴﻥ ﻋﺩﺩ ﻓﻭﺭﻱ ﺜﺎﺒﺕ ﻭ ﻤﺴﺠل . ﻜﻤﺎ‬
                                                 ‫ﺘﻘﻭﻡ ﻭﺤﺩﺓ ﺍﻟﺤﺴﺎﺏ ﻭ ﺍﻟﻤﻨﻁﻕ ﺒﺘﻨﻔﻴﺫ ﺒﻌﺽ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻋﻠﻰ ﻤﺴﺠل ﻭﺤﻴﺩ .‬
‫ﻭﻴﻘﺼﺩ ﺒﺎﻟﻭﻟﻭﺝ ﺍﻟﺴﺭﻴﻊ ﻟﻤﻠﻑ ﺍﻟﻤﺴﺠﻼﺕ ﺍﻟﺫﻱ ﻴﺤﺘﻭﻱ ﻋﻠﻰ ﺍﺜﻨﻴﻥ ﻭ ﺜﻼﺜﻴﻥ ﻤﺴﺠل ﻋﻤل ﻟﻸﻏﺭﺍﺽ ﺍﻟﻌﺎﻤﺔ ، ﻋﻠﻰ ﺃﻨﻪ ﺍﻟﻭﻟﻭﺝ‬
‫ﺍﻟﺫﻱ ﻴﺴﺘﻐﺭﻕ ﺯﻤﻥ ﻗﺩﺭﻩ ﺩﻭﺭﺓ ﺴﺎﻋﺔ ﻭﺍﺤﺩﺓ . ﻫﺫﺍ ﻴﻌﻨﻲ ﺃﻨﻪ ﺨﻼل ﺩﻭﺭﺓ ﺴﺎﻋﺔ ﻭﺍﺤﺩﺓ ﺘﻘﻭﻡ ﻭﺤﺩﺓ ﺍﻟﺤﺴﺎﺏ ﻭ ﺍﻟﻤﻨﻁﻕ ‪ALU‬‬
‫) ‪ ( Arithmetic Logic Unit‬ﺒﺘﻨﻔﻴﺫ ﻋﻤﻠﻴﺔ ﻭﺍﺤﺩﺓ ، ﻓﻬﻲ ﺘﻘﻭﻡ ﺃﻭﻻ ﺒﺈﺨﺭﺍﺝ ﺍﻟﻤﻌﺎﻤﻠﻴﻥ ﻤﻥ ﻤﻠﻑ ﺍﻟﺴﺠﻼﺕ ، ﻭﻤﻥ ﺜﻡ ﺘﻨﻔﺫ‬
                                             ‫ﹰ‬
                         ‫ﺍﻟﻌﻤﻠﻴﺔ ، ﻭﻤﻥ ﺜﻡ ﺘﻌﻴﺩ ﺘﺨﺯﻴﻥ ﺍﻟﻨﺘﻴﺠﺔ ﻓﻲ ﻤﻠﻑ ﺍﻟﻤﺴﺠﻼﺕ. ﻭﻜل ﺫﻟﻙ ﻴﺘﻡ ﺨﻼل ﺩﻭﺭﺓ ﺴﺎﻋﺔ ﻭﺍﺤﺩﺓ.‬
                                                          ‫ﻴﺒﻴﻥ ﺍﻟﺸﻜل ) ٢ ( ﺨﺭﻴﻁﺔ ﺫﺍﻜﺭﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻭ ﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﻁﻴﺎﺕ :‬




‫ﺒﺎﻹﻀﺎﻓﺔ ﻟﻔﻌﺎﻟﻴﺔ ﺍﻟﻤﺴﺠل ، ﻓﺈﻨﻨﺎ ﻨﺴﺘﻁﻴﻊ ﺍﺴﺘﺨﺩﺍﻡ ﺃﻨﻤﺎﻁ ﻋﻨﻭﻨﺔ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺘﻘﻠﻴﺩﻴﺔ ﻟﻌﻨﻭﻨﺔ ﻤﻠﻑ ﺍﻟﻤﺴﺠﻼﺕ ﺃﻴﻀﺎ . ﻭ ﻫﺫﺍ ﻤﺘﺎﺡ‬
             ‫ﹰ‬
‫ﻋﻠﻰ ﺍﻋﺘﺒﺎﺭ ﺃﻥ ﻤﻠﻑ ﺍﻟﻤﺴﺠﻼﺕ ﻤﻌﻴﻥ ﺒﺎﺜﻨﻴﻥ ﻭ ﺜﻼﺜﻴﻥ ﻤﺴﺠﻼ ﻤﺘﻭﻀﻌﺔ ﻋﻨﺩ ﺤﻴﺯ ﻋﻨﻭﻨﺔ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﺴﻔﻠﻲ ) ‪( $00 - $1F‬‬
                                                   ‫ﹰ‬
‫ﻤﻤﺎ ﻴﺴﻤﺢ ﻟﻨﺎ ﺒﺎﻟﻭﻟﻭﺝ ﺇﻟﻰ ﻤﻠﻑ ﺍﻟﻤﺴﺠﻼﺕ ﻜﻤﻭﺍﻗﻊ ﺫﺍﻜﺭﻴﺔ .ﻜﻤﺎ ﻴﺤﺘﻭﻱ ﺤﻴﺯ ﺫﺍﻜﺭﺓ ‪ I/O‬ﻋﻠﻰ ﺃﺭﺒﻊ ﻭﺴﺘﻴﻥ ﻋﻨﻭﺍﻨﺎ ﻤﺨﺼﺼﺔ‬
      ‫ﹰ‬
‫ﻟﻭﻅﺎﺌﻑ ﻭﺤﺩﺓ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﺭﻜﺯﻴﺔ ‪ CPU‬ﺍﻟﻤﺤﻴﻁﻴﺔ ‪ ، peripheral‬ﻤﺜل ﻤﺴﺠﻼﺕ ﺍﻟﺘﺤﻜﻡ ، ﺍﻟﻤﺅﻗﺘﺎﺕ/ﺍﻟﻌﺩﺍﺩﺍﺕ ، ﺍﻟﻤﺒﺩﻻﺕ‬
‫‪ ، A/D‬ﻭ ﻭﻅﺎﺌﻑ ‪ I/O‬ﺍﻷﺨﺭﻯ . ﻭﻨﺴﺘﻁﻴﻊ ﺍﻟﻭﻟﻭﺝ ﺇﻟﻰ ﺤﻴﺯ ‪ I/O‬ﺒﺸﻜل ﻤﺒﺎﺸﺭ ، ﺃﻭ ﻤﻥ ﺨﻼل ﻋﻨﺎﻭﻴﻥ ﺤﻴﺯ ﺍﻟﻤﻌﻁﻴﺎﺕ‬
                                                                             ‫ﺍﻟﺘﺎﻟﻲ ﻟﻤﻠﻑ ﺍﻟﻤﺴﺠﻼﺕ ) ‪( $20 - $5F‬‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬

‫ﻴﺘﻭﻀﻊ ﺍﻟﻤﻜﺩﺱ ﻓﻌﻠﻴﺎ ﻓﻲ ﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﻌﺎﻤﺔ ‪ ، SRAM‬ﻭ ﺒﺎﻟﺘﺎﻟﻲ ﻓﺈﻥ ﺤﺠﻡ ﺍﻟﻤﻜﺩﺱ ﻴﺘﺤﺩﺩ ﻓﻘﻁ ﺒﺤﺠﻡ ﺍﻟﺫﺍﻜﺭﺓ ‪SRAM‬‬
                                                                                     ‫ﹰ‬
‫ﺍﻹﺠﻤﺎﻟﻲ . ﻭﻴﻘﻊ ﻋﻠﻰ ﻋﺎﺘﻕ ﺍﻟﻤﺒﺭﻤﺞ ﺘﻬﻴﺌﺔ ﻤﺅﺸﺭ ﺍﻟﻤﻜﺩﺱ ‪ SP‬ﻓﻲ ﺭﻭﺘﻴﻥ ﺨﺩﻤﺔ ﺍﻟﺘﺼﻔﻴﺭ ‪ reset‬ﻭﺫﻟﻙ ﻗﺒل ﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﺍﻤﺞ‬
‫ﺍﻟﻔﺭﻋﻴﺔ ﻭ ﺍﻟﻤﻘﺎﻁﻌﺎﺕ . ﻭﻤﺅﺸﺭ ﺍﻟﻤﻜﺩﺱ ﻫﻭ ﻋﺒﺎﺭﺓ ﻋﻥ ﻤﺴﺠل ﺒﻌﺭﺽ ‪ 8–bit‬ﻨﺴﺘﻁﻴﻊ ﻗﺭﺍﺀﺘﻪ ﺃﻭ ﺍﻟﻜﺘﺎﺒﺔ ﻋﻠﻴﻪ ، ﻭﻴﺘﻡ‬
                                                             ‫ﺍﻟﻭﺼﻭل ﺇﻟﻴﻪ ﺒﻌﻨﻭﺍﻨﻪ ﺍﻟﻤﺘﻭﻀﻊ ﻓﻲ ﺤﻴﺯ ﺫﺍﻜﺭﺓ ‪. I/O‬‬
                                                                         ‫ﻤﻠﻑ ﺍﻟﻤﺴﺠﻼﺕ ﺫﺍﺕ ﺍﻷﻏﺭﺍﺽ ﺍﻟﻌﺎﻤﺔ :‬
              ‫‪‬ﺒﻴﻥ ﺍﻟﺸﻜل ) ٣ ( ﺘﺭﻜﻴﺒﺔ ﻤﺴﺠﻼﺕ ﺍﻷﻏﺭﺍﺽ ﺍﻟﻌﺎﻤﺔ ﺍﻻﺜﻨﻴﻥ ﻭ ﺍﻟﺜﻼﺜﻴﻥ ﻓﻲ ﻭﺤﺩﺓ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﺭﻜﺯﻴﺔ ‪. CPU‬‬
                                                                                                       ‫ﻴ‪‬‬




‫ﻴﺘﺄﻟﻑ ﻤﻠﻑ ﺍﻟﻤﺴﺠﻼﺕ ﻤﻥ ﺍﺜﻨﻴﻥ ﻭ ﺜﻼﺜﻴﻥ ﻤﺴﺠل ﻋﻤل ، ﺘﺸﻜل ﺁﺨﺭ ﺴﺘﺔ ﻤﻥ ﻫﺫﻩ ﺍﻟﻤﺴﺠﻼﺕ ﺜﻼﺙ ﻤﺴﺠﻼﺕ ﻤﺅﺸﺭ ﺒﻁﻭل‬
‫‪ 16-bit‬ﺘﺴﺘﺨﺩﻡ ﻓﻲ ﺍﻟﻌﻨﻭﻨﺔ ﻏﻴﺭ ﺍﻟﻤﺒﺎﺸﺭﺓ ﻟﻌﻨﻭﻨﺔ ﺤﻴﺯ ﺍﻟﻤﻌﻁﻴﺎﺕ ، ﻭﺍﻟﺘﻲ ﺘﺴﻬل ﺤﺴﺎﺏ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻌﺎل ، ﻜﻤﺎ ﻴﺴﺘﺨﺩﻡ ﺃﺤﺩ‬
‫ﻫﺫﻩ ﺍﻟﻤﺴﺠﻼﺕ ﺍﻟﺜﻼﺙ ﻜﻤﺅﺸﺭ ﻋﻨﻭﻨﺔ ﻟﻠﺠﺩﺍﻭل ﺍﻟﻤﻨﺸﺄﺓ ﻓﻲ ﺫﺍﻜﺭﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ ‪ . Flash‬ﻨﺭﻤﺯ ﻟﻬﺫﻩ ﺍﻟﻤﺴﺠﻼﺕ ﺍﻟﺜﻼﺙ ﺒﺎﻟﺭﻤﻭﺯ‬
                                                                   ‫ﺍﻟﺘﺎﻟﻴﺔ : ﺍﻟﻤﺴﺠل ‪ ، X‬ﺍﻟﻤﺴﺠل ‪ ، Y‬ﺍﻟﻤﺴﺠل ‪. Z‬‬
‫ﺇﻥ ﺘﻌﻠﻴﻤﺎﺕ ﻤﺴﺠل ﺍﻟﻌﻤل ﻓﻲ ﻤﺠﻤﻭﻋﺔ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻟﻬﺎ ﺩﻭﺭﺓ ﺴﺎﻋﺔ ﻭﺍﺤﺩﺓ ﻭ ﺫﻟﻙ ﺒﺎﻟﻨﺴﺒﺔ ﻟﻜﺎﻤل ﻤﻠﻑ ﺍﻟﻤﺴﺠﻼﺕ . ﻴﺴﺘﺜﻨﻰ ﻤﻥ‬
‫ﺫﻟﻙ ﻓﻘﻁ ﺨﻤﺱ ﺘﻌﻠﻴﻤﺎﺕ ﺤﺴﺎﺒﻴﺔ ﻭ ﻤﻨﻁﻘﻴﺔ : ‪ ORI ، ANDI ، CPI ، SUBI ، SBCI‬ﺒﻴﻥ ﻋﺩﺩ ﺜﺎﺒﺕ ﻭﻤﺴﺠل ، ﻭﻜﺫﻟﻙ‬
‫ﺒﺎﻟﻨﺴﺒﺔ ﻟﺘﻌﻠﻴﻤﺔ ﺘﺤﻤﻴل ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﺜﺎﺒﺘﺔ ﺍﻟﻔﻭﺭﻴﺔ ‪ . LDI‬ﻭ ﺘﻁﺒﻕ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻋﻠﻰ ﻤﺴﺠﻼﺕ ﺍﻟﻨﺼﻑ ﺍﻟﺜﺎﻨﻲ ﻟﻤﻠﻑ‬
‫‪ OR ،AND ،CP ،SUB‬ﻭﻜل ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻷﺨﺭﻯ ﺒﻴﻥ ﻤﺴﺠﻠﻴﻥ‬              ‫ﺍﻟﻤﺴﺠﻼﺕ 31‪. R16…R‬ﻜﻤﺎ ﺘﻁﺒﻕ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ‪،SBC‬‬
‫ﺃﻭ ﻋﻠﻰ ﻤﺴﺠل ﻭﺤﻴﺩ ﻋﻠﻰ ﻜﺎﻤل ﻤﻠﻑ ﺍﻟﻤﺴﺠﻼﺕ. ﻭ ﻨﻼﺤﻅ ﻜﻤﺎ ﻫﻭ ﻤﺒﻴﻥ ﻓﻲ ﺍﻟﺸﻜل ) ٢ ( ، ﺃﻥ ﻟﻜل ﻤﺴﺠل ﻋﻨﻭﺍﻥ ﻓﻲ ﺤﻴﺯ‬
                       ‫ﻋﻨﻭﻨﺔ ﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﻁﻴﺎﺕ ، ﻭﺘﺤﺘل ﻫﺫﻩ ﺍﻟﻤﺴﺠﻼﺕ ﻋﻠﻰ ﺨﺭﻴﻁﺔ ﺍﻟﺫﺍﻜﺭﺓ ﺃﻭل ﺍﺜﻨﺎﻥ ﻭ ﺜﻼﺜﻭﻥ ﻤﻭﻗﻌﺎ .‬
                         ‫ﹰ‬
‫ﻭﻤﻤﺎ ﻴﺠﺩﺭ ﺫﻜﺭﻩ ﻫﻨﺎ ﺃﻥ ﻤﻠﻑ ﺍﻟﻤﺴﺠﻼﺕ ﻟﻴﺱ ﻤﻨﺠﺯﺍ ﻓﻴﺯﻴﺎﺌﻴﺎ ﻜﻤﻭﺍﻗﻊ ﺍﻟﺫﺍﻜﺭﺓ ‪ ، SRAM‬ﻭﻟﻘﺩ ﻤﻨﺢ ﻫﺫﺍ ﺍﻟﺘﻨﻅﻴﻡ ﻟﻠﺫﺍﻜﺭﺓ ﻤﺭﻭﻨﺔ‬
                                                         ‫ﹰ‬        ‫ﹰ‬
        ‫ﻜﺒﻴﺭﺓ ﻓﻲ ﺍﻟﻭﻟﻭﺝ ﻟﻠﻤﺴﺠﻼﺕ ، ﻤﺜل ﺍﻟﻤﺴﺠﻼﺕ ‪ Z، Y ،X‬ﺍﻟﺘﻲ ﺘﻌﻤل ﻜﻤﺅﺸﺭﺍﺕ ﻷﻱ ﻤﺴﺠل ﻓﻲ ﻤﻠﻑ ﺍﻟﻤﺴﺠﻼﺕ .‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬




                                                                                         ‫ﺤﻴﺯ ﺫﺍﻜﺭﺓ ‪: I/O‬‬
‫ﺘﺘﻭﻀﻊ ﻤﺨﺘﻠﻑ ﺍﻟﻭﻅﺎﺌﻑ ﺍﻟﻤﺤﻴﻁﻴﺔ ﻭ ﻭﻅﺎﺌﻑ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ ﻟﻠﻤﺘﺤﻜﻡ 3132‪ AT90S‬ﻓﻲ ﺤﻴﺯ ﺫﺍﻜﺭﺓ ‪ . I/O‬ﻭ ﻴﺘﻡ ﺍﻟﻭﻟﻭﺝ‬
‫ﺇﻟﻰ ﻤﺨﺘﻠﻑ ﻤﻭﺍﻗﻊ ‪ I/O‬ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﺘﻌﻠﻴﻤﺘﻴﻥ ‪ IN‬ﻭ ‪ OUT‬ﺍﻟﻠﺘﻴﻥ ﺘﺤﻭﻻﻥ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻤﺎ ﺒﻴﻥ ﻤﺴﺠﻼﺕ ﺍﻟﻌﻤل ﺍﻻﺜﻨﻴﻥ ﻭﺍﻟﺜﻼﺜﻴﻥ‬
‫ﺫﺍﺕ ﺍﻷﻏﺭﺍﺽ ﺍﻟﻌﺎﻤﺔ ﻭ ﺤﻴﺯ ﺫﺍﻜﺭﺓ ‪ . I/O‬ﻭﻨﺴﺘﻁﻴﻊ ﺍﻟﻭﻟﻭﺝ ﺇﻟﻰ ﺨﺎﻨﺎﺕ ﻤﺴﺠﻼﺕ ﺤﻴﺯ ‪ I/O‬ﺍﻟﻭﺍﻗﻌﺔ ﻀﻤﻥ ﻤﺠﺎل ﺍﻟﻌﻨﺎﻭﻴﻥ (‬
‫) ‪ $20 - $5F‬ﺒﺸﻜل ﻤﺒﺎﺸﺭ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﺘﻌﻠﻴﻤﺘﻴﻥ ‪ CBI‬ﻭ ‪ ،SBI‬ﻭﻜﺫﻟﻙ ﻴﻤﻜﻨﻨﺎ ﻓﺤﺹ ﺃﻱ ﺨﺎﻨﺔ ﻤﻥ ﻫﺫﻩ ﺍﻟﻤﺴﺠﻼﺕ ﺒﺎﺴﺘﺨﺩﺍﻡ‬
                                                                               ‫ﺍﻟﺘﻌﻠﻴﻤﺘﻴﻥ ‪ SBIS‬ﻭ ‪. SBIC‬‬
 ‫ﻤﻼﺤﻅﺔ : ﻋﻨﺩﻤﺎ ﻨﺴﺘﺨﺩﻡ ﺃﻭﺍﻤﺭ ﻤﺤﺩﺩﺓ ﻋﻠﻰ ﺤﻴﺯ ﺫﺍﻜﺭﺓ ‪ ، I/O‬ﻓﺈﻨﻪ ﻴﺠﺏ ﺍﺴﺘﺨﺩﺍﻡ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ : ‪، SBIS ،OUT ،IN‬‬
‫‪ SBIC‬ﻤﻊ ﻋﻨﺎﻭﻴﻥ ﺤﻴﺯ ‪ . ( $00 - $3F ) I/O‬ﻭﻋﻨﺩ ﻋﻨﻭﻨﺔ ﻤﺴﺠﻼﺕ ﺤﻴﺯ ‪ I/O‬ﻜﺫﺍﻜﺭﺓ ﻤﻌﻁﻴﺎﺕ ‪ SRAM‬ﻓﺈﻨﻪ ﻴﺠﺏ‬
                                                                         ‫ﺇﻀﺎﻓﺔ ﺍﻟﻘﻴﻤﺔ 02$ ﺇﻟﻰ ﻫﺫﺍ ﺍﻟﻌﻨﻭﺍﻥ .‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬

 ‫‪I/O Ports‬‬                                                                          ‫ﻨﻭﺍﻓﺫ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ‬
    ‫‪Port B‬‬                                                                                             ‫ﺍﻟﻨﺎﻓﺫﺓ ‪B‬‬
                 ‫ﺍﻟﻨﺎﻓﺫﺓ ‪ B‬ﻫﻲ ﻋﺒﺎﺭﺓ ﻋﻥ ﻨﺎﻓﺫﺓ ﺩﺨل/ﺨﺭﺝ ﺜﻨﺎﺌﻴﺔ ﺍﻻﺘﺠﺎﻩ ﺫﺍﺕ ﺜﻤﺎﻨﻴﺔ ﺃﻗﻁﺎﺏ ‪. 8-bit bi-directional‬‬
‫ﺘﺘﻭﻀﻊ ﻋﻨﺎﻭﻴﻥ ﻤﺴﺠﻼﺕ ﺍﻟﻨﺎﻓﺫﺓ ‪ B‬ﺍﻟﺜﻼﺙ ﻓﻲ ﺤﻴﺯ ﺫﺍﻜﺭﺓ ‪ I/O‬ﻭﻫﻲ : ﻤﺴﺠل ﺍﻟﻤﻌﻁﻴﺎﺕ ‪ PORTB‬ﺍﻟـﺫﻱ ﻴﺘﻭﻀـﻊ ﻋﻨـﺩ‬
‫ﺍﻟﻌﻨﻭﺍﻥ )83$(81$ ، ﻤﺴﺠل ﺍﺘﺠﺎﻩ ﺍﻟﻤﻌﻁﻴﺎﺕ ‪ DDRB‬ﺍﻟﺫﻱ ﻴﺘﻭﻀﻊ ﻋﻨﺩ ﺍﻟﻌﻨﻭﺍﻥ )73$(71$ ، ﻋﻨﻭﺍﻥ ﺃﻗﻁﺎﺏ ﺩﺨل ﺍﻟﻨﺎﻓﺫﺓ‬
‫‪ PINB – B‬ﺍﻟﺫﻱ ﻴﺘﻭﻀﻊ ﻋﻨﺩ ﺍﻟﻌﻨﻭﺍﻥ )63$(61$ . ﻭﻴﺠﺏ ﺍﻻﻨﺘﺒﺎﻩ ﺇﻟﻰ ﺃﻥ ﻋﻨﻭﺍﻥ ﺃﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪ B‬ﻴﻘﺭﺃ ﻓﻘﻁ ، ﺒﻴﻨﻤﺎ ﺘﻨﻔـﺫ‬
‫‪MOS‬‬      ‫ﻋﻤﻠﻴﺎﺕ ﺍﻟﻘﺭﺍﺀﺓ ﻭﺍﻟﻜﺘﺎﺒﺔ ﻋﻠﻰ ﻤﺴﺠل ﺍﻟﻤﻌﻁﻴﺎﺕ ﻭ ﻤﺴﺠل ﺍﺘﺠﺎﻩ ﺍﻟﻤﻌﻁﻴﺎﺕ . ﺘﺘﻡ ﻋﻤﻠﻴﺔ ﺍﺨﺘﻴﺎﺭ ﺘﺭﺍﻨﺯﻴـﺴﺘﻭﺭ ﺍﻟﺭﻓـﻊ‬
‫‪ pull-up‬ﺒﺸﻜل ﻤﺴﺘﻘل ﻟﻜل ﻗﻁﺏ ﻤﻥ ﺃﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪ . B‬ﻭﺒﺎﺴﺘﻁﺎﻋﺔ ﺩﺍﺭﺓ ﻗﻴﺎﺩﺓ ﺨﺭﺝ ﺍﻟﻨﺎﻓﺫﺓ ‪ B‬ﺘﻘﺩﻴﻡ ﺘﻴـﺎﺭ ﻗـﺩﺭﻩ ‪20mA‬‬
‫ﻗﺎﺩﺭ ﻋﻠﻰ ﻗﻴﺎﺩﺓ ﻭﺤﺩﺓ ﺇﻅﻬﺎﺭ ‪ LED‬ﺒﺸﻜل ﻤﺒﺎﺸﺭ . ﻭﻋﻨﺩ ﺍﺴﺘﺨﺩﺍﻡ ﺃﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪ B‬ﻜﺄﻗﻁﺎﺏ ﺩﺨل ، ﻓﺈﻨﻬﺎ ﺘﺼﺒﺢ ﻤﻨﺒﻌﺎ ﻟﻠﺘﻴـﺎﺭ‬
        ‫ﹰ‬                                                                  ‫ٍ‬
                       ‫)‪ (IIL‬ﻋﻨﺩ ﺭﺒﻁﻬﺎ ﺨﺎﺭﺠﻴﺎ ﻤﻊ ﺍﻟﻤﻨﻁﻕ ﺍﻟﻤﻨﺨﻔﺽ ﻭ ﺫﻟﻙ ﺇﺫﺍ ﻜﺎﻥ ﺘﺭﺍﻨﺯﻴﺴﺘﻭﺭ ﺍﻟﺭﻓﻊ ﺍﻟﺩﺍﺨﻠﻲ ‪‬ﻔﻐﻼ .‬
                         ‫ﻤ ﹼﹰ‬                                                          ‫ﹰ‬
                                                     ‫ﻷﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪ B‬ﻭﻅﺎﺌﻑ ﺃﺨﺭﻯ ﻤﺒﻴﻨﺔ ﻓﻲ ﺍﻟﺠﺩﻭل )61( ﺍﻟﺘﺎﻟﻲ :‬
                                                           ‫ﺍﻟﻭﻅﻴﻔﺔ ﺍﻟﺨﺎﺼﺔ‬                ‫ﻗﻁﺏ ﺍﻟﻨﺎﻓﺫﺓ‬
                                   ‫0‪ ) AIN‬ﺍﻟﻤﺩﺨل ﺍﻟﻤﻭﺠﺏ ﻟﻠﻤﻘﺎﺭﻥ ﺍﻟﺘﺸﺎﺒﻬﻲ (‬                     ‫0‪PB‬‬
                                    ‫1‪ ) AIN‬ﺍﻟﻤﺩﺨل ﺍﻟﺴﺎﻟﺏ ﻟﻠﻤﻘﺎﺭﻥ ﺍﻟﺘﺸﺎﺒﻬﻲ (‬                    ‫1‪PB‬‬
                               ‫1‪) OC‬ﻗﻁﺏ ﺨﺭﺝ ﻤﻘﺎﺭﻨﺔ ﻨﻅﻴﺭ ﺍﻟﻤﺅﻗﺕ/ﺍﻟﻌﺩﺍﺩ١ (‬                       ‫3‪PB‬‬
                            ‫‪ ) MISO‬ﻗﻁﺏ ﺩﺨل ﺍﻟﻤﻌﻁﻴﺎﺕ ﺃﺜﻨﺎﺀ ﺒﺭﻤﺠﺔ ﺍﻟﺫﺍﻜﺭﺓ (‬                      ‫5‪PB‬‬
                             ‫‪) MISO‬ﻗﻁﺏ ﺨﺭﺝ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺃﺜﻨﺎﺀ ﻗﺭﺍﺀﺓ ﺍﻟﺫﺍﻜﺭﺓ (‬                      ‫6‪PB‬‬
                                          ‫‪) SCK‬ﻗﻁﺏ ﺩﺨل ﺍﻟﺴﺎﻋﺔ ﺍﻟﺘﺴﻠﺴﻠﻴﺔ (‬                      ‫7‪PB‬‬
                               ‫ﺍﻟﺠﺩﻭل )61( : ﺍﻟﻭﻅﺎﺌﻑ ﺍﻟﺨﺎﺼﺔ ﻷﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪B‬‬
‫ﻋﻨﺩ ﺍﺴﺘﺨﺩﺍﻡ ﺃﻗﻁﺎﺏ ﻫﺫﻩ ﺍﻟﻨﺎﻓﺫﺓ ﻟﺨﺩﻤﺔ ﺍﻟﻭﻅﺎﺌﻑ ﺍﻟﺨﺎﺼﺔ ﺍﻷﺨﺭﻯ ﺍﻟﺘﻲ ﺘﺘﻤﺘﻊ ﺒﻬﺎ ، ﻓﺈﻨﻪ ﻴﺠـﺏ ﻀـﺒﻁ ﻗـﻴﻡ ﻤـﺴﺠل ﺍﺘﺠـﺎﻩ‬
                                     ‫ﺍﻟﻤﻌﻁﻴﺎﺕ ‪ DDRB‬ﻭﻤﺴﺠل ﺍﻟﻨﺎﻓﺫﺓ ‪ PORTB‬ﺒﻤﺎ ﻴﺘﻼﺀﻡ ﻤﻊ ﺸﺭﺡ ﻫﺫﻩ ﺍﻟﻭﻅﺎﺌﻑ .‬




        ‫‪The Port B Data Register-PORTB‬‬                                ‫ﻤﺴﺠل ﻤﻌﻁﻴﺎﺕ ﺍﻟﻨﺎﻓﺫﺓ ‪PORTB – B‬‬




 ‫‪The Port B Direction Register-DDRB‬‬                               ‫ﻤﺴﺠل ﺍﺘﺠﺎﻩ ﻤﻌﻁﻴﺎﺕ ﺍﻟﻨﺎﻓﺫﺓ ‪DDRB – B‬‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬


 ‫‪The Port B Input PINS Address-PINB‬‬                                       ‫ﻋﻨﻭﺍﻥ ﺩﺨل ﺃﻗﻁﺎﺏ ﺩﺨل ﺍﻟﻨﺎﻓﺫﺓ‪PINB- B‬‬




‫ﺇﻥ ﻋﻨﻭﺍﻥ ﺃﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪ PINB-B‬ﻟﻴﺴﺕ ﻤﺴﺠﻼ ﻓﻴﺯﻴﺎﺌﻴﺎ . ﺤﻴﺙ ﻨﺴﺘﻁﻴﻊ ﺍﻟﻭﺼﻭل ﺒﻬـﺫﺍ ﺍﻟﻌﻨـﻭﺍﻥ ﺇﻟـﻰ ﺍﻟﻘـﻴﻡ ﺍﻟﻔﻴﺯﻴﺎﺌﻴـﺔ‬
                                                           ‫ﹰ‬        ‫ﹰ‬
‫ﺍﻟﻤﻭﺠﻭﺩﺓ ﻋﻠﻰ ﻜل ﻗﻁﺏ ﻤﻥ ﺃﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪ . B‬ﻓﻌﻨﺩ ﻗﺭﺍﺀﺓ ﻤﺴﺠل ﺍﻟﻨﺎﻓﺫﺓ ‪ PORTB – B‬ﻓﺈﻨﻨﺎ ﻨﻘﺭﺃ ﻤﻌﻁﻴﺎﺕ ﻤﺎﺴـﻙ ‪latch‬‬
   ‫ﺍﻟﻨﺎﻓﺫﺓ ‪ . B‬ﺃﻤﺎ ﻋﻨﺩﻤﺎ ﻨﻘﺭﺃ ﻋﻨﻭﺍﻥ ﺃﻗﻁﺎﺏ ﺩﺨل ﺍﻟﻨﺎﻓﺫﺓ ‪ B‬ﻓﺈﻨﻨﺎ ﻨﻘﺭﺃ ﺍﻟﻘﻴﻡ ﺍﻟﻤﻨﻁﻘﻴﺔ ﺍﻟﺤﺎﻟﻴﺔ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻋﻠﻰ ﺃﻗﻁﺎﺏ ﻫﺫﻩ ﺍﻟﻨﺎﻓﺫﺓ .‬

‫‪Port B as General Digital I/O‬‬                                                      ‫ﺍﻟﻨﺎﻓﺫﺓ ‪ B‬ﻜﻨﺎﻓﺫﺓ ﺩﺨل/ﺨﺭﺝ ﻋﺎﻤﺔ‬


                                                              ‫ﺘﺭﺍﻨﺯﻴﺴﺘﻭﺭ‬
                          ‫ﺍﻟﺘﻌﻠﻴﻕ‬                                               ‫‪I/O‬‬     ‫‪PORTBn DDBn‬‬
                                                                 ‫ﺍﻟﺭﻓﻊ‬
                       ‫ﻤﻤﺎﻨﻌﺔ ﻋﺎﻟﻴﺔ‬                            ‫ﺒﺩﻭﻥ ﺭﻓﻊ‬         ‫ﺩﺨل‬          ‫0‬            ‫0‬
    ‫ﻴﺼﺒﺢ ‪ PBn‬ﻤﻨﺒﻌﺎ ﻟﻠﺘﻴﺎﺭ ‪ IIL‬ﺇﺫﺍ ﺍﺘﺼل ﺨﺎﺭﺠﻴﺎ ﻤﻊ‬
       ‫ﹰ‬                          ‫ﹰ‬
                                                                 ‫ﻤﻊ ﺭﻓﻊ‬         ‫ﺩﺨل‬          ‫1‬            ‫0‬
                     ‫ﺍﻟﻤﻨﻁﻕ ﺍﻟﻤﻨﺨﻔﺽ‬
                 ‫ﺨﺭﺝ ﻤﺭﻓﻭﻉ ﺇﻟﻰ ﺍﻟﺼﻔﺭ‬                           ‫ﺒﺩﻭﻥ ﺭﻓﻊ‬        ‫ﺨﺭﺝ‬           ‫0‬            ‫1‬
                 ‫ﺨﺭﺝ ﻤﺭﻓﻭﻉ ﺇﻟﻰ ﺍﻟﻭﺍﺤﺩ‬                          ‫ﺒﺩﻭﻥ ﺭﻓﻊ‬        ‫ﺨﺭﺝ‬           ‫1‬            ‫1‬
                              ‫ﺍﻟﺠﺩﻭل )71( : ﺘﺄﺜﻴﺭ ﺍﻟﺨﺎﻨﺔ ‪ DDRBn‬ﻋﻠﻰ ﺃﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪B‬‬
                                                                                      ‫ﺤﻴﺙ ﺃﻥ : 7، ‪ 6…0 : n‬ﺭﻗﻡ ﺍﻟﻘﻁﺏ‬


    ‫‪Port D‬‬                                                                                                       ‫ﺍﻟﻨﺎﻓﺫﺓ ‪D‬‬
                                                          ‫ﻷﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪ D‬ﻭﻅﺎﺌﻑ ﺃﺨﺭﻯ ﻤﺒﻴﻨﺔ ﻓﻲ ﺍﻟﺠﺩﻭل )81( ﺍﻟﺘﺎﻟﻲ :‬
                                                                 ‫ﺍﻟﻭﻅﻴﻔﺔ ﺍﻟﺨﺎﺼﺔ‬                    ‫ﻗﻁﺏ ﺍﻟﻨﺎﻓﺫﺓ‬
                                           ‫‪ ) RXD‬ﻤﺩﺨل ﺍﺴﺘﻘﺒﺎل ﻭﺤﺩﺓ ‪( UART‬‬                                ‫0‪PD‬‬
                                             ‫‪ ) TXD‬ﻗﻁﺏ ﺍﺭﺴﺎل ﻭﺤﺩﺓ ‪( UART‬‬                                 ‫1‪PD‬‬
                                              ‫0‪) INT‬ﻤﺩﺨل ﺍﻟﻤﻘﺎﻁﻌﺔ ﺍﻟﺨﺎﺭﺠﻴﺔ 0 (‬                           ‫2‪PD‬‬
                                              ‫1‪) INT‬ﻤﺩﺨل ﺍﻟﻤﻘﺎﻁﻌﺔ ﺍﻟﺨﺎﺭﺠﻴﺔ 1 (‬                           ‫3‪PD‬‬
                                                              ‫0‪) T‬ﻤﺩﺨل ﺍﻟﻌﺩﺍﺩ 0 (‬                        ‫4‪PD‬‬
                                                              ‫1‪) T‬ﻤﺩﺨل ﺍﻟﻌﺩﺍﺩ 1 (‬                        ‫5‪PD‬‬
                                    ‫ﺍﻟﺠﺩﻭل )81( : ﺍﻟﻭﻅﺎﺌﻑ ﺍﻟﺨﺎﺼﺔ ﻷﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪B‬‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬


‫ﻋﻨﺩ ﺍﺴﺘﺨﺩﺍﻡ ﺃﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪ D‬ﺒﻭﻅﺎﺌﻔﻬﺎ ﺍﻷﺨﺭﻯ ﻓﺈﻨﻪ ﻴﺠﺏ ﺘﺤﻤﻴل ﺍﻟﻤﺴﺠﻠﻴﻥ ‪ DDRD‬ﻭ ‪ PORTD‬ﺒﻤﺎ ﻴﺘﻨﺎﺴـﺏ ﻤـﻊ ﻫـﺫﻩ‬
                                                                                                          ‫ﺍﻟﻭﻅﺎﺌﻑ .‬
        ‫‪The Port D Data Register-PORTD‬‬                                     ‫ﻤﺴﺠل ﻤﻌﻁﻴﺎﺕ ﺍﻟﻨﺎﻓﺫﺓ ‪PORTD – D‬‬




     ‫‪The Port D Data Direction Register-DDRD‬‬                           ‫ﻤﺴﺠل ﺍﺘﺠﺎﻩ ﻤﻌﻁﻴﺎﺕ ﺍﻟﻨﺎﻓﺫﺓ ‪DDRD- D‬‬




          ‫‪The Port D Input Pins Address-PIND‬‬                               ‫ﻋﻨﻭﺍﻥ ﺃﻗﻁﺎﺏ ﺩﺨل ﺍﻟﻨﺎﻓﺫﺓ ‪PIND- D‬‬




‫ﺇﻥ ﻋﻨﻭﺍﻥ ﺍﻟﻨﺎﻓﺫﺓ ‪ PIND – D‬ﻟﻴﺱ ﻤﺴﺠﻼ ، ﺤﻴﺙ ‪‬ﻤﻜﻥ ﻫﺫﺍ ﺍﻟﻌﻨﻭﺍﻥ ﻋﻤﻠﻴﺔ ﺍﻟﻭﺼﻭل ﺇﻟﻰ ﺍﻟﻘﻴﻡ ﺍﻟﻔﻴﺯﻴﺎﺌﻴﺔ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻋﻠﻰ ﻜـل‬
                                                                  ‫ﻴ‬       ‫ﹰ‬
‫ﻗﻁﺏ ﻤﻥ ﺃﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ‪ . D‬ﻓﻌﻨﺩ ﻗﺭﺍﺀﺓ ﻤﺴﺠل ﻤﻌﻁﻴﺎﺕ ﺍﻟﻨﺎﻓﺫﺓ ‪ PORTD – D‬ﻓﺈﻨﻨﺎ ﻨﻘﺭﺃ ﻤﻌﻁﻴﺎﺕ ﻤﺎﺴﻙ ‪ latch‬ﺍﻟﻨﺎﻓـﺫﺓ ‪. D‬‬
     ‫ﺃﻤﺎ ﻋﻨﺩ ﻗﺭﺍﺀﺓ ﻋﻨﻭﺍﻥ ﺃﻗﻁﺎﺏ ﺩﺨل ﺍﻟﻨﺎﻓﺫﺓ ‪ PIND – D‬ﻓﺈﻨﻨﺎ ﻨﻘﺭﺃ ﺍﻟﻘﻴﻡ ﺍﻟﻤﻨﻁﻘﻴﺔ ﺍﻟﺤﺎﻟﻴﺔ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻋﻠﻰ ﺃﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪. D‬‬

                                                              ‫ﺘﺭﺍﻨﺯﻴﺴﺘﻭﺭ‬
                           ‫ﺍﻟﺘﻌﻠﻴﻕ‬                                              ‫‪I/O‬‬     ‫‪PORTDn‬‬          ‫‪DDRDn‬‬
                                                                 ‫ﺍﻟﺭﻓﻊ‬
                        ‫ﻤﻤﺎﻨﻌﺔ ﻋﺎﻟﻴﺔ‬                            ‫ﺒﺩﻭﻥ ﺭﻓﻊ‬        ‫ﺩﺨل‬          ‫0‬              ‫0‬
      ‫ﻴﺼﺒﺢ ‪ PDn‬ﻤﻨﺒﻌﺎ ﻟﻠﺘﻴﺎﺭ ‪ IIL‬ﺇﺫﺍ ﺍﺘﺼل ﺨﺎﺭﺠﻴﺎ ﻤﻊ‬
         ‫ﹰ‬                          ‫ﹰ‬
                                                                 ‫ﻤﻊ ﺭﻓﻊ‬         ‫ﺩﺨل‬          ‫1‬              ‫0‬
                      ‫ﺍﻟﻤﻨﻁﻕ ﺍﻟﻤﻨﺨﻔﺽ‬
                   ‫ﺨﺭﺝ ﻤﺭﻓﻭﻉ ﺇﻟﻰ ﺍﻟﺼﻔﺭ‬                          ‫ﺒﺩﻭﻥ ﺭﻓﻊ‬       ‫ﺨﺭﺝ‬           ‫0‬              ‫1‬
                   ‫ﺨﺭﺝ ﻤﺭﻓﻭﻉ ﺇﻟﻰ ﺍﻟﻭﺍﺤﺩ‬                         ‫ﺒﺩﻭﻥ ﺭﻓﻊ‬       ‫ﺨﺭﺝ‬           ‫1‬              ‫1‬
                           ‫ﺍﻟﺠﺩﻭل )91( : ﺘﺄﺜﻴﺭ ﺍﻟﺨﺎﻨﺎﺕ ‪ DDRDn‬ﻋﻠﻰ ﺃﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪D‬‬
                                                                                 ‫ﺤﻴﺙ ﺃﻥ : 7، ‪ 6…0 : n‬ﺭﻗﻡ ﺍﻟﻘﻁﺏ‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬


                               ‫‪ ‬‬
                              ‫‪ ‬ـ ‪.Leds‬‬


                                                                            ‫ﻧﻮاﻓﺬ اﻟﺪﺧﻞ/اﻟﺨﺮج ) ‪: ( I/O Ports‬‬

                                                                                               ‫أو ً : اﻟﻨﺎﻓﺬة ‪B‬‬
                                                                                                           ‫ﻻ‬
‫اﻟﻨﺎﻓ ﺬة ‪ B‬ھ ﻲ ﻋﺒ ﺎرة ﻋ ﻦ ﻧﺎﻓ ﺬة دﺧ ﻞ/ﺧ ﺮج ﺛﻨﺎﺋﯿ ﺔ اﻻﺗﺠ ﺎه ذات ﺛﻤﺎﻧﯿ ﺔ أﻗﻄ ﺎب. ﺗﺘﻮﺿ ﻊ ﻋﻨ ﺎوﯾﻦ ﻣ ﺴﺠﻼت اﻟﻨﺎﻓ ﺬة ‪B‬‬
                                                                             ‫اﻟﺜﻼث ﻓﻲ ﺣﯿﺰ ذاﻛﺮة ‪ I/O‬وھﻲ :‬
                                       ‫- ﻣﺴﺠﻞ اﻟﻤﻌﻄﯿﺎت ‪ PORTB‬اﻟﺬي ﯾﺘﻮﺿﻊ ﻋﻨﺪ اﻟﻌﻨﻮان )83$(81$ .‬
                                   ‫- ﻣﺴﺠﻞ اﺗﺠﺎه اﻟﻤﻌﻄﯿﺎت ‪ DDRB‬اﻟﺬي ﯾﺘﻮﺿﻊ ﻋﻨﺪ اﻟﻌﻨﻮان )73$(71$ .‬
                             ‫- ﻋﻨﻮان أﻗﻄﺎب دﺧﻞ اﻟﻨﺎﻓﺬة ‪ PINB – B‬اﻟﺬي ﯾﺘﻮﺿﻊ ﻋﻨﺪ اﻟﻌﻨﻮان )63$(61$ .‬

‫وﯾﺠﺐ اﻻﻧﺘﺒﺎه إﻟﻰ أن ﻋﻨﻮان أﻗﻄﺎب اﻟﻨﺎﻓﺬة ‪ B‬ﯾﻘﺮأ ﻓﻘﻂ ، ﺑﯿﻨﻤﺎ ﺗﻨﻔﺬ ﻋﻤﻠﯿﺎت اﻟﻘﺮاءة واﻟﻜﺘﺎﺑﺔ ﻋﻠﻰ ﻣﺴﺠﻞ اﻟﻤﻌﻄﯿ ﺎت و‬
‫ﻣﺴﺠﻞ اﺗﺠﺎه اﻟﻤﻌﻄﯿﺎت . ﺗﺘﻢ ﻋﻤﻠﯿﺔ اﺧﺘﯿﺎر ﺗﺮاﻧﺰﯾﺴﺘﻮر اﻟﺮﻓﻊ ‪ MOS pull-up‬ﺑ ﺸﻜﻞ ﻣ ﺴﺘﻘﻞ ﻟﻜ ﻞ ﻗﻄ ﺐ ﻣ ﻦ أﻗﻄ ﺎب‬
                                                                                                    ‫اﻟﻨﺎﻓﺬة ‪. B‬‬

                                                                         ‫ﻣﺴﺠﻞ ﻣﻌﻄﯿﺎت اﻟﻨﺎﻓﺬة ‪: PORTB – B‬‬




                                                                      ‫ﻣﺴﺠﻞ اﺗﺠﺎه ﻣﻌﻄﯿﺎت اﻟﻨﺎﻓﺬة ‪: DDRB – B‬‬




                                                                       ‫ﻋﻨﻮان دﺧﻞ أﻗﻄﺎب دﺧﻞ اﻟﻨﺎﻓﺬة ‪: PINB-B‬‬




‫إن ﻋﻨﻮان أﻗﻄﺎب اﻟﻨﺎﻓﺬة ‪ PINB-B‬ﻟﯿﺴﺖ ﻣﺴﺠ ً ﻓﯿﺰﯾﺎﺋﯿً . ﺣﯿﺚ ﻧﺴﺘﻄﯿﻊ اﻟﻮﺻﻮل ﺑﮭ ﺬا اﻟﻌﻨ ﻮان إﻟ ﻰ اﻟﻘ ﯿﻢ اﻟﻔﯿﺰﯾﺎﺋﯿ ﺔ‬
                                                            ‫ﺎ‬       ‫ﻼ‬
‫اﻟﻤﻮﺟﻮدة ﻋﻠﻰ ﻛﻞ ﻗﻄﺐ ﻣﻦ أﻗﻄﺎب اﻟﻨﺎﻓﺬة ‪ . B‬ﻓﻌﻨﺪ ﻗﺮاءة ﻣﺴﺠﻞ اﻟﻨﺎﻓ ﺬة ‪ PORTB – B‬ﻓﺈﻧﻨ ﺎ ﻧﻘ ﺮأ ﻣﻌﻄﯿ ﺎت ﻣﺎﺳ ﻚ‬
‫‪ latch‬اﻟﻨﺎﻓﺬة ‪ . B‬أﻣﺎ ﻋﻨﺪﻣﺎ ﻧﻘﺮأ ﻋﻨﻮان أﻗﻄﺎب دﺧﻞ اﻟﻨﺎﻓﺬة ‪ B‬ﻓﺈﻧﻨﺎ ﻧﻘﺮأاﻟﻘﯿﻢ اﻟﻤﻨﻄﻘﯿﺔ اﻟﺤﺎﻟﯿ ﺔ اﻟﻤﻮﺟ ﻮدة ﻋﻠ ﻰ أﻗﻄ ﺎب‬
                                                                                                      ‫ھﺬه اﻟﻨﺎﻓﺬة .‬

          ‫ﯾﺒﯿﻦ اﻟﺠﺪول اﻟﺘﺎﻟﻲ ﺗﺄﺛﯿﺮ اﻟﺨﺎﻧﺔ ‪ DDRBn‬ﻋﻠﻰ أﻗﻄﺎب اﻟﻨﺎﻓﺬة ‪ ) B‬ﺣﯿﺚ أن : ٦ ... 0 = ‪ n‬رﻗﻢ اﻟﻘﻄﺐ (‬



                                                                           ‫اﻟﻔﺎرس ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب واﻹﺗﺼﺎﻻت‬
                                                                         ‫ﺳﻮرﯾﺎ – ﺣﻤﺎه- ھـ-916922 33 369+‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬

                                                    ‫اﻟﺘﻌﻠﯿﻖ‬    ‫ﺗﺮاﻧﺰﯾﺴﺘﻮر اﻟﺮﻓﻊ‬      ‫‪I/O‬‬      ‫‪PORTB‬‬         ‫‪DDRB‬‬
                                                                                                  ‫‪n‬‬            ‫‪n‬‬
                                               ‫ﻣﻤﺎﻧﻌﺔ ﻋﺎﻟﯿﺔ‬            ‫ﺑﺪون رﻓﻊ‬      ‫دﺧﻞ‬          ‫0‬            ‫0‬

‫ﯾﺼﺒﺢ ‪ PBn‬ﻣﻨﺒﻌً ﻟﻠﺘﯿ ﺎر ‪ IIL‬إذا اﺗ ﺼﻞ ﺧﺎرﺟﯿ ً ﻣ ﻊ اﻟﻤﻨﻄ ﻖ‬
            ‫ﺎ‬                             ‫ﺎ‬                              ‫ﻣﻊ رﻓﻊ‬      ‫دﺧﻞ‬              ‫1‬               ‫0‬
                                                  ‫اﻟﻤﻨﺨﻔﺾ‬
                                  ‫ﺧﺮج ﻣﺮﻓﻮع إﻟﻰ اﻟﺼﻔﺮ‬                  ‫ﺑﺪون رﻓﻊ‬      ‫ﺧﺮج‬              ‫0‬               ‫1‬

                                   ‫ﺧﺮج ﻣﺮﻓﻮع إﻟﻰ اﻟﻮاﺣﺪ‬                ‫ﺑﺪون رﻓﻊ‬      ‫ﺧﺮج‬              ‫1‬               ‫1‬


  ‫وﯾﻮﺟﺪ ﻣﺜﻞ ھﺬه اﻟﻤﺴﺠﻼت ﻟﻠﻤﻨﻔﺬ ‪ D‬و ھﻲ: ‪ DDRD,PORTD and PIND‬وﺟﻤﯿﻊ ھﺬه اﻟﻤﺴﺠﻼت ﻣﻮﺟ ﻮدة ﻓ ﻲ‬
                                         ‫اﻟﻤﺴﺠﻼت اﻟﺨﺎﺻﺔ اﻟـ46 " ‪SFR "Special Function Registers‬‬
  ‫ﻋﻠﻰ ﺳﺒﯿﻞ اﻟﻤﺜﺎل إذا أردﻧﺎ أن ﯾﻜﻮن ﻧﺼﻒ اﻟﻤﻨﻔ ﺬ ‪ B‬دﺧ ﻞ ﻣ ﻊ ﻣﻘﺎوﻣ ﺔ رﻓ ﻊ وﻧ ﺼﻔﮫ ﺧ ﺮج وذﻟ ﻚ ﺑﺎﻟﺘﻌﺎﻗ ﺐ أي ‪PIN‬‬
                                                                      ‫دﺧﻞ ﺛﻢ اﻟﺬي ﯾﻠﯿﮫ ﺧﺮج ﻓﯿﺠﺐ أن ﻧﻜﺘﺐ:‬
                                    ‫)"11110000"( ‪PORTB=0x0F‬‬
                                    ‫)"01010101"( ‪DDRB=0xAA‬‬

         ‫وﻧﻼﺣﻆ ھﻨﺎ أﻧﮫ ﺗﻢ ﺗﻌﺮﯾﻒ 1.‪ PINB.7 PINB.5 PINB.3 PINB‬ﻋﻠﻰ أﻧﮭﺎ ﺟﻤﯿﻌﮭﺎ ﺧﺮج.‬
                      ‫و 0.‪ PINB2. PINB‬دﺧﻞ وﻟﻜﻦ ﻣﻊ وﺟﻮد ﻣﻘﺎوﻣﺔ رﻓﻊ "أي أن ﻗﯿﻤﺔ اﻟﺪﺧﻞ اﻹﻓﺘﺮاﺿﯿﺔ 1 ".‬
                         ‫و4.‪ PINB.6 PINB‬دﺧﻞ وﻟﻜﻦ ﺑﺪون ﻣﻘﺎوﻣﺔ رﻓﻊ . "أي أن ﻗﯿﻤﺔ اﻟﺪﺧﻞ اﻹﻓﺘﺮاﺿﯿﺔ 0 ".‬

  ‫- ﯾﻌ ﺮف اﻟ ـ ‪ Led‬ﺑﺄﻧ ﮫ ﻋﺒ ﺎرة ﻋ ﻦ ﺛﻨ ﺎﺋﻲ ﺿ ﻮﺋﻲ ﯾﻤ ﺮر اﻟﺘﯿ ﺎر اﻟﻜﮭﺮﺑ ﺎﺋﻲ ﻋﻨ ﺪ ﺗﻄﺒﯿ ﻖ 1 ﻣﻨﻄﻘ ﻲ ﻋﻠ ﻰ ﻣ ﺼﻌﺪه و 0‬
                                    ‫ﻣﻨﻄﻘﻲ ﻋﻠﻰ ﻣﮭﺒﻄﮫ وأﺛﻨﺎء ﻣﺮور اﻟﺘﯿﺎر ﯾﻘﻮم ﺑﺈﺻﺪار ﺿﻮء ﻣﻌﯿﻦ وﯾﺮﻣﺰ ﻟﮫ .‬


                                               ‫1‬                ‫0‬

                                                                                      ‫رﻣﺰ اﻟﺜﻨﺎﺋﻲ اﻟﻀﻮﺋﻲ ‪Led‬‬

  ‫ﯾﻮﺻ ﻞ ﻋ ﺎدة ﻣ ﻊ اﻟﺜﻨ ﺎﺋﻲ اﻟ ﻀﻮﺋﻲ ﻋﻠ ﻰ اﻟﺘﺴﻠ ﺴﻞ ﻣﻘﺎوﻣ ﺔ ﻟﺤﻤﺎﯾ ﺔ اﻟﺜﻨ ﺎﺋﻲ ﻣ ﻦ اﻹﻧﮭﯿ ﺎرﻓﻲ ﺣ ﺎل ﺗﻄﺒﯿ ﻖ ﺟﮭ ﻮد ﻋﺎﻟﯿ ﺔ ،‬
                                                               ‫وﺗﻘﺪر ﻗﯿﻤﺘﮭﺎ ﻓﻲ ﺣﺎل ﺗﻄﺒﯿﻖ ﺟﮭﺪ 5 ﻓﻮﻟﻂ ﺑـ 022 أوم .‬

  ‫ﺳﻮف ﻧﻘﻮم ﺑﻜﻞ اﻟﻤﺸﺎرﯾﻊ ﺑﺎﻟﺘﻜﻠﻢ ﻋﻦ اﻟﻌﻨﺎﺻ ﺮ اﻟﺘ ﻲ ﺳ ﻮف ﻧ ﺴﺘﺨﺪﻣﮭﺎ ﻓ ﻲ اﻟﻤ ﺸﺮوع ﺛ ﻢ ﺷ ﺮح اﻟﺘﻌﻠﯿﻤ ﺎت اﻟﺠﺪﯾ ﺪة ﻓ ﻲ‬
                                                                            ‫اﻟﻤﺸﺮوع ﺛﻢ ﺷﺮح اﻟﻤﺸﺮوع ﺑﺎﻟﻜﺎﻣﻞ .‬




                                                                            ‫اﻟﻔﺎرس ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب واﻹﺗﺼﺎﻻت‬
                                                                          ‫ﺳﻮرﯾﺎ – ﺣﻤﺎه- ھـ-916922 33 369+‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬


                                                                         ‫دارة اﻟﻤﺸﺮوع :‬




                             ‫ﻣﺸﺮوع ﺣﺮﻛﺔ أﺿﻮاء اﻟﻠﯿﺪات‬




                                                                       ‫ﺑﺮﻧﺎﻣﺞ اﻟﻤﺸﺮوع :‬


‫>‪#include <90s2313.h‬‬            ‫ﺗﻮﺟﯿﮫ ﻣﻦ أﺟﻞ إدراج اﻟﻤﻜﺘﺒﺔ اﻟﻤﺘﻌﻠﻘﺔ ﺑﺎﻟﻤﻌﺎﻟﺞ ٣١٣٢‬

‫)‪void main(void‬‬        ‫اﻟﺘﺎﺑﻊ اﻟﺮﺋﯿﺴﻲ //‬
‫{‬
‫;00‪PORTB=0x‬‬        ‫ﺗﮭﯿﺌﺔ اﻟﻤﻨﻔﺬ ﻛﻠﮫ ﺧﺮج //‬
‫;‪DDRB=0xff‬‬

‫)1( ‪while‬‬          ‫ﺣﻠﻘﺔ ﻻﻧﮭﺎﺋﯿﺔ //‬
   ‫{‬
    ‫;‪PORTB=0xff‬‬             ‫إﺿﺎءة ﺟﻤﯿﻊ اﻟﻠﯿﺪات //‬
    ‫;)(‪delay‬‬           ‫اﺳﺘﺪﻋﺎء اﻟﺘﺎﺑﻊ اﻟﻔﺮﻋﻲ اﻟﻤﺴﺆول ﻋﻦ ﻋﻤﻠﯿﺔ اﻟﺘﺄﺧﯿﺮ اﻟﺰﻣﻨﻲ //‬

                                                          ‫اﻟﻔﺎرس ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب واﻹﺗﺼﺎﻻت‬
                                                        ‫ﺳﻮرﯾﺎ – ﺣﻤﺎه- ھـ-916922 33 369+‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬



      ‫;00‪PORTB=0x‬‬
      ‫;)(‪delay‬‬

      ‫;‪PORTB=0x0f‬‬
      ‫;)(‪delay‬‬

      ‫;0‪PORTB=0xf‬‬
      ‫;)(‪delay‬‬

      ‫;18‪PORTB=0x‬‬
      ‫;)(‪delay‬‬

     ‫;}‬             ‫ﻧﮭﺎﯾﺔ اﻟﺤﻠﻘﺔ اﻻﻧﮭﺎﺋﯿﺔ //‬
     ‫}‬             ‫ﻧﮭﺎﯾﺔ اﻟﺘﺎﺑﻊ اﻟﺮﺋﯿﺴﻲ //‬

‫)‪void delay(void‬‬         ‫ﺗﺎﺑﻊ ﻓﺮﻋﻲ ﻣﻦ أﺟﻞ ﻋﻤﻠﯿﺔ اﻟﺘﺄﺧﯿﺮ //‬
‫{‬
‫;999=‪int t‬‬     ‫ﺗﻌﺮﯾﻒ ﻣﺘﺤﻮل ﺣﻘﯿﻘﻲ وإﺳﻨﺎد اﻟﻘﯿﻤﺔ ٩٩٩ﻟﮫ //‬
‫)0=!‪while (t‬‬       ‫ﺣﻠﻘﺔ ﺗﺴﺘﻤﺮ ﻣﺎدام اﻟﻌﺪد اﻟﻤﺘﺤﻮل ﻻﯾﺴﺎوي اﻟﺼﻔﺮ //‬
‫;--‪t‬‬              ‫إﻧﻘﺎص ﻗﯿﺔ اﻟﻤﺘﺤﻮل ﺑﻤﻘﺪار١ //‬
‫}‬                  ‫ﻧﮭﺎﯾﺔ اﻟﺘﺎﺑﻊ اﻟﻔﺮﻋﻲ واﻟﻌﻮدة إﻟﻰ ﻣﻜﺎن اﻹﺳﺘﺪﻋﺎء //‬
                                                                 ‫ﺷﺮح ﺗﻌﻠﯿﻤﺎت اﻟﻤﺸﺮوع :‬
                  ‫----------------------------------------------------------------------------------------‬
                                          ‫>‪#include <90s2313.h‬‬                                            ‫-‬
‫ھ ﺬه اﻟﺘﻌﻠﯿﻤ ﺔ ﻋﺒ ﺎرة ﻋ ﻦ ﺗﻮﺟﯿ ﮫ ﻟﻠﻤﺘ ﺮﺟﻢ ﺑ ﺄن ھ ﺬا اﻟﺒﺮﻧ ﺎﻣﺞ ﻣﺨ ﺼﺺ ﻟﻠﻤ ﺘﺤﻜﻢ 3132‪ At90s‬ﻟ ﺬﻟﻚ ﯾﻘ ﻮم اﻟﻤ ﺘﺤﻜﻢ‬
                       ‫ِ‬
                              ‫ﺑﺈدراج اﻟﻤﻜﺘﺒﺔ اﻟﻤﺨﺼﺼﺔ ﻟﮭﺬا اﻟﻤﻌﺎﻟﺞ "ﻛﻞ ﺗﻌﻠﯿﻤﺔ ﺗﺒﺪأ ﺑـ # ﻓﮭﻲ ﻋﺒﺎرة ﻋﻦ ﺗﻮﺟﯿﮫ".‬
                  ‫----------------------------------------------------------------------------------------‬

‫// )‪void main(void‬‬                                                                         ‫- اﻟﺘﺎﺑﻊ اﻟﺮﺋﯿﺴﻲ‬
‫{‬
‫........‬
‫.........‬
‫}‬

     ‫ﯾﻌﺪ ھﺬا اﻟﺘﺎﺑﻊ ھﻮ اﻷﺳﺎﺳﻲ ﻓﻲ ﻛﺘﺎﺑﺔ اﻟﺒﺮﻧﺎﻣﺞ واﻟﺬي ﻣﻨﮫ ﯾﺒﺪأ اﻟﻤﺘﺮﺟﻢ ﺑﺘﻨﻔﯿﺬ ﻋﻤﻠﯿﺔ اﻟﺘﺮﺟﻤﺔ وﻟﮫ اﻟﺼﯿﻐﺔ اﻟﺴﺎﺑﻘﺔ.‬
‫و) ‪ (void‬ﺗﻌﻨﻲ ﺑﺄن ھﺬا اﻟﺘﺎﺑﻊ ﻻ ﯾﺴﺘﻘﺒﻞ أي ﻗﯿﻤﺔ و ‪ void‬اﻟﺘﻲ ﻓ ﻲ اﻟﺒﺪاﯾ ﺔ ﺗﻌﻨ ﻲ أن اﻟﺘ ﺎﺑﻊ ﻻ ﯾﺮﺟ ﻊ أي ﻗﯿﻤ ﺔ وذﻟ ﻚ‬
                                                                    ‫ﻷن ھﺬا اﻟﺘﺎﺑﻊ ﻻﯾﺴﺘﺪﻋﻰ ﻣﻦ ﻗﺒﻞ أي ﺗﺎﺑﻊ آﺧﺮ .‬




                                                                         ‫اﻟﻔﺎرس ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب واﻹﺗﺼﺎﻻت‬
                                                                       ‫ﺳﻮرﯾﺎ – ﺣﻤﺎه- ھـ-916922 33 369+‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬

                 ‫----------------------------------------------------------------------------------------‬
                                             ‫;00‪PORTB=0x‬‬                                                          ‫-‬
                                              ‫;‪DDRB=0xff‬‬                                                          ‫-‬

‫ھﺎﺗﺎن اﻟﺘﻌﻠﯿﻤﺘﺎن ﯾﺴﺘﺨﺪﻣﺎن ﻣ ﻦ أﺟ ﻞ ﺗﮭﯿﺌﯿ ﺔ اﻟﻤ ﺪاﺧﻞ واﻟﻤﺨ ﺎرج ﻓﺎﻟﺘﻌﻠﯿﻤ ﺔ ;00‪ PORTB=0x‬ﺗﻌﻨ ﻲ أن أﺧ ﺮج ﻋﻠ ﻰ‬
‫اﻟﻤﻨﻔﺬ ‪ B‬اﻟﻘﯿﻤﺔ اﻟﺴﺖ ﻋﺸﺮﯾﺔ 00 ﺣﯿ ﺚ ﺗ ﺪل اﻟﺪاﻟ ﺔ ‪ 0X‬ﻋﻠ ﻰ أن اﻟ ﺮﻗﻢ ﻣﻜﺘ ﻮب ﺑﺎﻟ ﺼﯿﻐﺔ اﻟ ﺴﺖ ﻋ ﺸﺮﯾﺔ . واﻟﺘﻌﻠﯿﻤ ﺔ‬
                                                            ‫;‪ DDRB=0xff‬ﺗﻌﻨﻲ ﺑﺄن اﻟﻨﺎﻓﺬة ‪ B‬ﻛﻠﮭﺎ ﻣﺨﺎرج .‬
              ‫ﻓﻔﻲ ﺑﺪاﯾﺔ أي ﻣﺸﺮوع ﯾﺠﺐ ﺗﮭﯿﺌﯿﺔ اﻟﻤﺴﺠﻼت اﻟﺘﻲ ﺳﻮف ﻧﺴﺘﺨﺪﻣﮭﺎ ﻓﻲ ﻣﺸﺮوﻋﻨﺎ ﻗﺒﻞ ﺗﻨﻔﯿﺬ أي ﺧﻄﻮة .‬
                 ‫-----------------------------------------------------------------------------------------‬
‫)1( ‪while‬‬                                                                                  ‫ﺣﻠﻘﺔ ﻻﻧﮭﺎﺋﯿﺔ‬       ‫-‬
   ‫{‬
    ‫.……‬
    ‫.……‬
    ‫;}‬


            ‫ﺗﺴﺘﺨﺪم ھﺬه اﻟﺤﻠﻘﺔ ﻣﻦ أﺟﻞ اﺳﺘﻤﺮار ﻋﻤﻞ اﻟﺒﺮﻧﺎﻣﺞ داﺋﻤً واﻟﺸﺮط )1( ﯾﻌﻨﻲ أن ھﺬا اﻟﺸﺮط داﺋﻤً ﻣﺤﻘﻖ .‬
                   ‫ﺎ‬                                  ‫ﺎ‬
                                                        ‫ﻣﻼﺣﻈﺔ ﻻﺗﻨﺴﻰ اﻟﻔﺎﺻﻠﺔ اﻟﻤﻨﻘﻮﻃﺔ ﻓﻲ ﻧﮭﺎﯾﺔ اﻟﺤﻠﻘﺔ .‬

                                             ‫ﺿﻤﻦ ھﺬه اﻟﺤﻠﻘﺔ ﻧﻜﺘﺐ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺬي ﺳﻮف ﯾﻘﻮم اﻟﻤﻌﺎﻟﺞ ﺑﺘﻨﻔﯿﺬه داﺋﻤً .‬
                                               ‫ﺎ‬

                 ‫----------------------------------------------------------------------------------------‬
‫;‪PORTB=0xff‬‬
                    ‫أﺧﺮج اﻟﻘﯿﻤﺔ اﻟﺴﺖ ﻋﺸﺮﯾﺔ ‪ 0xff‬ﻋﻠﻰ اﻟﻤﻨﻔﺬ ‪ B‬أي َﺿﺊ ﺟﻤﯿﻊ اﻟﻠﯿﺪات اﻟﻤﻮﺻﻮﻟﺔ ﻣﻊ ھﺬا اﻟﻤﻨﻔﺬ‬
                                                          ‫أ‬

                 ‫----------------------------------------------------------------------------------------‬
      ‫;)(‪delay‬‬
‫وھﻲ ﺗﻌﻠﯿﻤﺔ اﺳﺘﺪﻋﺎء ﻟﺘﺎﺑﻊ ﻓﺮﻋﻲ ﯾﺪﻋﻰ ‪ delay‬ﯾﻘﻮم ھﺬا اﻟﺘﺎﺑﻊ ﺑﻌﻤﻠﯿﺔ اﻟﺘﺄﺧﯿﺮ اﻟﺰﻣﻨﻲ ﯾﺒﻦ ﻛ ﻞ ﻋﻤﻠﯿﺘ ﯿﻦ إﻇﮭ ﺎر وذﻟ ﻚ‬
‫ﺣﺘﻰ ﯾﺘﺜﻨﻰ ﻟﻨﺎ ﻣﻼﺣﻈﺔ اﻟﺤﺮﻛﺔ ﻗﺒﻞ أن ﺗﺄﺗﻲ اﻟﺤﺮﻛﺔ اﻟﺘﺎﻟﯿ ﺔ وﻛﻤ ﺎ ﻧﻌﻠ ﻢ ﺑ ﺄن ﺳ ﺮﻋﺔ اﻟﻤﻌ ﺎﻟﺞ ﻛﺒﯿ ﺮة ﺟ ﺪً ﻟ ﺬا ﻓﺒ ﺪون ھ ﺬه‬
                 ‫ا‬
                                                                                     ‫اﻟﻌﻤﻠﯿﺔ ﻟﻦ ﻧﻼﺣﻆ ھﺬه اﻟﺤﺮﻛﺎت .‬

                 ‫----------------------------------------------------------------------------------------‬
                                ‫ﺑﻌﺪ ذﻟﻚ ﻧﻘﻮم ﺑﻜﺘﺎﺑﺔ ﺣﺮﻛﺎت ﺟﺪﯾﺪة وﻧﻀﻊ ﺑﻌﺪ ﻛﻞ ﺣﺮﻛﺔ اﻟﺘﺄﺧﯿﺮ اﻟﺰﻣﻨﻲ ‪. delay‬‬
                 ‫----------------------------------------------------------------------------------------‬
‫// )‪void delay(void‬‬                                                     ‫ﺗﺎﺑﻊ ﻓﺮﻋﻲ ﻣﻦ أﺟﻞ ﻋﻤﻠﯿﺔ اﻟﺘﺄﺧﯿﺮ‬
‫{‬
‫;999=‪int t‬‬
‫)0=!‪while (t‬‬
‫;--‪t‬‬
‫}‬
‫ھﺬا اﻟﺘﺎﺑﻊ ﻻﯾﺴﺘﻘﺒﻞ أي ﻗﯿﻤﺔ وﻻﯾﻌﯿ ﺪ أي ﻗﯿﻤ ﺔ وإﻧﻤ ﺎ ﯾﻘ ﻮم ﺑﻌﻤﻠﯿ ﺎت ﺗﻤ ﺘﺺ ﻧﺒ ﻀﺎت اﻟﻤﻌ ﺎﻟﺞ ﻣ ﻦ أﺟ ﻞ اﻟﺘ ﺄﺧﯿﺮ اﻟﺰﻣﻨ ﻲ‬
‫وﻟﺘﺤﻘﯿﻖ ذﻟﻚ ﺗﻢ ﺗﻌﺮﯾﻒ ﻣﺘﺤﻮل ﺣﻘﯿﻘﻲ ‪ t‬ﯾﺤﺘﻮي ﻋﻠ ﻰ اﻟﻘﯿﻤ ﺔ ٩٩٩ ﺛ ﻢ ﻧ ﺪﺧﻞ ﺑﺤﻠﻘ ﺔ ‪ while‬وﺗﺒﻘ ﻰ ھ ﺬه اﻟﺤﻠﻘ ﺔ ﻣ ﺎدام‬
‫اﻟﺸﺮط ﺑﯿﻦ اﻟﻘﻮﺳﯿﻦ ﻣﺤﻘﻖ وھﻮ أن ‪ t‬ﻻﯾﺴﺎوي اﻟﺼﻔﺮ)0=!‪ (t‬وﺿﻤﻦ ھﺬه اﻟﺤﻠﻘ ﺔ ﻧﻘ ﻮم ﺑﺈﻧﻘ ﺎص اﻟﻌ ﺪد ‪ (t--) t‬وﺗﺒﻘ ﻰ‬
‫اﻟﺤﻠﻘﺔ ﺣﺘ ﻰ ﺗ ﺼﺒﺢ ﻗﯿﻤ ﺔ اﻟﻌ ﺪد ‪t‬ﻣ ﺴﺎوﯾﺔ ﻟﻠ ﺼﻔﺮ وﻋﻨ ﺪھﺎ ﯾﺮﺟ ﻊ اﻟﻤﻌ ﺎﻟﺞ إﻟ ﻰ ﻣﻜ ﺎن اﺳ ﺘﺪﻋﺎء ھ ﺬا اﻟﺘ ﺎﺑﻊ اﻟﻔﺮﻋ ﻲ ﻓ ﻲ‬
                                                               ‫اﻟﺒﺮﻧﺎﻣﺞ اﻷﺳﺎﺳﻲ وﯾﻘﻮم ﺑﻤﺘﺎﺑﻌﺔ ﺗﻨﻔﯿﺬ اﻟﺘﻌﻠﯿﻤﺎت اﻟﺘﺎﻟﯿﺔ.‬
                 ‫ﻣﻼﺣﻈﺔ : إذا ﻛﺎن ﺿﻤﻦ ﺣﻠﻘﺔ ‪ while‬ﻻﯾﻮﺟﺪ إﻻ ﺗﻌﻠﯿﻤﺔ واﺣﺪة ﻓﻠﯿﺲ ھﻨﺎك ﺣﺎﺟﺔ ﻟﻸﻗﻮاس ﻟﻠﺤﻠﻘﺔ .‬


                                                                             ‫اﻟﻔﺎرس ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب واﻹﺗﺼﺎﻻت‬
                                                                           ‫ﺳﻮرﯾﺎ – ﺣﻤﺎه- ھـ-916922 33 369+‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬


           ‫‪ ‬‬
    ‫‪Seven Segment ‬‬

                                                                   ‫ﺸﺎﺸﺎﺕ ﺍﻹﻅﻬﺎﺭ ﺫﺍﺕ ﺍﻟﺴﺒﻊ ﻗﻁﻊ ).‪: (7-Seg‬‬
‫ﺸﺎﺸﺔ ﺍﻹﻅﻬﺎﺭ ﺫﺍﺕ ﺍﻟﺴﺒﻊ ﻗﻁﻊ ).‪ (7-Seg‬ﻫﻲ ﻋﺒﺎﺭﺓ ﻋﻥ ﺃﺩﺍﺓ ﺍﻟﻜﺘﺭﻭﻨﻴﺔ ﺘﺤﺘﻭﻱ ﻋﻠﻰ ﺴﺒﻊ ﻗﻁﻊ ﻤﺘﻭﻀﻌﺔ ﺒـﺸﻜل ﻴـﺴﻤﺢ‬
‫ﺒﺈﻅﻬﺎﺭ ﺠﻤﻴﻊ ﺍﻷﺭﻗﺎﻡ ﻋﺒﺭﻫﺎ ، ﻭﺨﻠﻑ ﻜل ﻗﻁﻌﺔ ﻴﻭﺠﺩ ﻟﻴﺩ ﻀﻭﺌﻲ )‪ (LED‬ﻭﹸﻀﺎﺀ ﻫﺫﻩ ﺍﻟﻠﻴﺩﺍﺕ ﻭﹸﻁﻔﺊ ﺒﺸﻜل ﻴﺴﻤﺢ ﺒﺈﻅﻬﺎﺭ‬
                    ‫ﺘ‬                 ‫ﺘ‬
‫ﺍﻟﺭﻗﻡ ﺍﻟﻤﻁﻠﻭﺏ ، ﻭﻴﻤﻜﻥ ﻋﻥ ﻁﺭﻴﻕ ﻫﺫﻩ ﺍﻟﺸﺎﺸﺔ ﺇﻅﻬﺎﺭ ﺠﻤﻴﻊ ﺍﻷﺭﻗﺎﻡ ﻜﻤﺎ ﻴﻤﻜﻥ ﺇﻅﻬﺎﺭ ﺒﻌﺽ ﺍﻷﺤﺭﻑ ﻜـﺄﺤﺭﻑ ﺍﻟﻨﻅـﺎﻡ‬
                                                                                          ‫ﺍﻟﺴﺕ ﻋﺸﺭﻱ ﻤﺜ ﹰ .‬
                                                                                            ‫ﻼ‬
‫ﻭﻴﺨﺘﻠﻑ ﺍﻟﻀﻭﺀ ﺍﻟﺼﺎﺩﺭ ﻋﻨﻬﺎ ﺒﺎﺨﺘﻼﻑ ﻨﻭﻋﻬﺎ ، ﻓﻬﻨﺎﻙ ﺍﻟﺸﺎﺸﺎﺕ ﺍﻟﺤﻤﺭﺍﺀ ﻭﺍﻟﺨﻀﺭﺍﺀ ﻭﺍﻟﺼﻔﺭﺍﺀ ﻭﻓﻲ ﺒﻌﺽ ﺍﻷﺤﻴﺎﻥ ﺘـﺄﺘﻲ‬
‫ﻫﺫﻩ ﺍﻟﺸﺎﺸﺎﺕ ﺒﺎﻟﻠﻭﻥ ﺍﻟﺒﺭﺘﻘﺎﻟﻲ ، ﻭﻟﻜﻨﻬﺎ ﻋﻠﻰ ﺍﺨﺘﻼﻑ ﻨﻭﻋﻬﺎ ﻭﻟﻭﻨﻬﺎ ﺘﻤﺘﻠﻙ ﺠﻤﻴﻌﻬﺎ ﺴﺒﻊ ﻗﻁﻊ ﻤﺭﺘﺒﺔ ﻭﻓﻕ ﺍﻟـﺸﻜل ﺍﻟـﺴﺎﺒﻕ‬
                                                  ‫ﻭ ‪‬ﺭﻤﺯ ﻟﻜل ﻗﻁﻌﺔ ﻓﻴﻬﺎ ﺒﺤﺭﻑ ﻤﻥ ﺍﻷﺤﺭﻑ ﺍﻟﻤﺒﻴﻨﺔ ﺒﺎﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ :‬
                                                                                                         ‫ﻴ‬


                                                        ‫ﻓﻲ ﺍﻟﺸﻜل ﺍﻟﻤﺠﺎﻭﺭ ﺇﺫﺍ ﺃﺭﺩﻨﺎ ﺇﻅﻬﺎﺭ ﺍﻟﺭﻗﻡ )0( ﻤﺜ ﹰ ، ﻴﺠﺏ‬
                                                              ‫ﻼ‬
                                          ‫ﻋﻠﻴﻨﺎ ﺇﻀﺎﺀﺓ ﺍﻟـــﻘﻁﻊ )‪ (a,b,c,d,e,f‬ﻭﺇﻁـــﻔﺎﺀ ﺍﻟﻘـــﻁﻌﺔ )‪(g‬‬
                                                      ‫ﺃﻤﺎ ﺇﻅﻬﺎﺭ ﺍﻟﺭﻗﻡ )1( ﻓﻴﺘﻁﻠﺏ ﺇﻀﺎﺀﺓ ﺍﻟﻘﻁﻌﺘﻴﻥ )‪ (b,c‬ﻭﺇﻁﻔﺎﺀ‬
                                                     ‫ﺍﻟﻘﻁﻊ )‪ ، (a,d,e,f,g‬ﻭﻹﻅﻬﺎﺭ ﺍﻟﺭﻗﻡ )2( ﻴﺠﺏ ﺇﻀﺎﺀﺓ ﺍﻟﻘﻁﻊ‬
                                                        ‫)‪ (a,b,g,e,d‬ﻭﺇﻁﻔﺎﺀ ﺍﻟﻘﻁﻌﺘﻴﻥ )‪ (c,f‬ﻭﻫﻜﺫﺍ ﺒﺎﻟﻨﺴﺒﺔ ﻟﺒﻘﻴﺔ‬
                                                                                                     ‫ﺍﻷﺭﻗﺎﻡ .‬


‫ﺘﻤﺘﻠﻙ ﺍﻟﺨﺎﻨﺔ ﺍﻟﻭﺍﺤﺩ ﻤﻥ ﺸﺎﺸﺔ ﺍﻹﻅﻬﺎﺭ ).‪ (7-Seg‬ﻋﺎﺩ ﹰ ﻋﺸﺭﺓ ﺃﻗﻁﺎﺏ ﻤﺘﻭﻀﻌﺔ ﻋﻠﻰ ﻁﺭﻓﻴﻥ ﻤﺘﻘﺎﺒﻠﻴﻥ ﻤﻥ ﺍﻟﺨﺎﻨﺔ ﺇﻤﺎ ﻓـﻲ‬
                                                       ‫ﺓ‬
‫ﺍﻷﻋﻠﻰ ﻭﺍﻷﺴﻔل ﺃﻭ ﻋﻠﻰ ﺍﻟﺠﺎﻨﺒﻴﻥ ، ﺘﺄﺨﺫ ﺍﻟﻘﻁﻊ ﺍﻟﺴﺒﻊ ﺴﺒﻌﺔ ﺃﻗﻁﺎﺏ ﻤﻥ ﺍﻷﻗﻁﺎﺏ ﺍﻟﻌﺸﺭﺓ ﺒﺤﻴﺙ ﺃﻥ ﻜل ﻗﻁﺏ ﻴﺘـﺼل ﻤـﻊ‬
‫ﺍﻟﻘﻁﻌﺔ ﺍﻟﻤﻘﺎﺒﻠﺔ ﻟﻪ ، ﻭﻫﻨﺎﻙ ﻗﻁﺒﻴﻥ ﻟﻠﺘﻐﺫﻴﺔ ﻜل ﻗﻁﺏ ﻓﻲ ﻁﺭﻑ ﺒﺤﻴﺙ ﺘﻌﻤل ﺍﻟﺨﺎﻨﺔ ﻋﻨﺩ ﻭﺼل ﺍﻟﺘﻐﺫﻴﺔ ﺍﻟـﺴﺎﻟﺒﺔ ﺃﻭ ﺍﻟﻤﻭﺠﺒـﺔ‬
‫)ﺒﺤﺴﺏ ﻨﻭﻉ ﺍﻟﺨﺎﻨﺔ( ﺇﻟﻰ ﺃﺤﺩ ﻗﻁﺒﻲ ﺍﻟﺘﻐﺫﻴﺔ ، ﻭﺍﻟﻘﻁﺏ ﺍﻟﻌﺎﺸﺭ ﻤﺘﺼل ﻤﻊ ﺍﻟﻨﻘﻁﺔ ﺍﻟﻤﺘﻭﻀﻌﺔ ﺒﺠﺎﻨﺏ ﺍﻟﺨﺎﻨـﺔ ﻭﺒﺎﻟﺘـﺎﻟﻲ ﻫـﻭ‬
                                                                                        ‫ﻤﺴﺅﻭل ﻋﻥ ﺇﻀﺎﺀﺘﻬﺎ .‬
                                                    ‫ﻭﻟﺸﺎﺸﺔ ﺍﻹﻅﻬﺎﺭ ﺫﺍﺕ ﺍﻟﺴﺒﻊ ﻗﻁﻊ ).‪ (7-Seg‬ﻨﻭﻋﻴﻥ ﺭﺌﻴﺴﻴﻴﻥ :‬
                                                                          ‫1 . ﺍﻟﺸﺎﺸﺔ ﺫﺍﺕ ﺍﻟﻤﺼﺎﻋﺩ ﺍﻟﻤﺸﺘﺭﻜﺔ .‬
                                                                           ‫2 . ﺍﻟﺸﺎﺸﺔ ﺫﺍﺕ ﺍﻟﻤﻬﺎﺒﻁ ﺍﻟﻤﺸﺘﺭﻜﺔ .‬
                                                                        ‫1 . ﺍﻟﺸﺎﺸﺔ ﺫﺍﺕ ﺍﻟﻤﺼﺎﻋﺩ ﺍﻟﻤﺸﺘﺭﻜﺔ :‬
‫ﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﺘﻜﻭﻥ ﻤﺼﺎﻋﺩ ﺍﻟﻠﻴﺩﺍﺕ ﺍﻟﺴﺒﻌﺔ ﻤﺘﺼﻠﺔ ﻤﻊ ﺒﻌﻀﻬﺎ ﺍﻟﺒﻌﺽ ﻭﻤﻭﺼﻭﻟﺔ ﺇﻟﻰ ﻗﻁﺏ ﺍﻟﺘﻐﺫﻴﺔ ﻭﻴﻜﻭﻥ ﻤﻬﺒﻁ ﻜل ﻟﻴـﺩ‬
‫ﻤﺘﺼل ﻤﻊ ﺍﻟﻘﻁﺏ ﺍﻟﻤﺴﺅﻭل ﻋﻥ ﺇﻀﺎﺀﺘﻪ ، ﺤﻴﺙ ﺃﻥ ﺍﻟﻠﻴﺩ ﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ‪‬ﻀﺎﺀ ﻋﻨﺩﻤﺎ ﻴﺭﺩ ﻋﻠﻰ ﻤﻬﺒﻁﻪ )0( ﻤﻨﻁﻘﻲ ﻭ ‪‬ﻁﻔﺊ‬
   ‫ﻴ‬                                    ‫ﻴ‬
  ‫ﻋﻨﺩﻤﺎ ﻴﺭﺩ ﻋﻠﻰ ﻤﻬﺒﻁﻪ )1( ﻤﻨﻁﻘﻲ ﻤﻊ ﺍﻷﺨﺫ ﺒﻌﻴﻥ ﺍﻻﻋﺘﺒﺎﺭ ﺃﻥ ﻴﻜﻭﻥ ﻗﻁﺏ ﺍﻟﺘﻐﺫﻴﺔ ﻟﻠﺨﺎﻨﺔ ﻤﻭﺼﻭل ﺇﻟﻰ ﺠﻬﺩ )1( ﻤﻨﻁﻘﻲ‬
                                                ‫ﻭ ‪‬ﺴﻤﻰ ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻋﺎﺩ ﹰ ﻓﻲ ﺍﻟﺴﻭﻕ ‪‬ﻅﻬﺭ ﺭﻗﻤﻲ ﻤﻭﺠﺏ ﻤﺸﺘﺭﻙ .‬
                                                                     ‫ﻤ‬          ‫ﺓ‬                  ‫ﻴ‬
                                     ‫ﻭ ‪‬ﺒ‪‬ﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﺍﻟﻭﺼل ﺍﻟﺩﺍﺨﻠﻲ ﻟﹼﻴﺩﺍﺕ ﻓﻲ ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻤﻥ ﺸﺎﺸﺎﺕ ﺍﻹﻅﻬﺎﺭ :‬
                                                                        ‫ﻠ‬                              ‫ﻴﻴ‬


                                                                          ‫اﻟﻔﺎرس ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب واﻹﺗﺼﺎﻻت‬
                                                                        ‫ﺳﻮرﯾﺎ – ﺣﻤﺎه- ھـ-916922 33 369+‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬




                                                          ‫‪a‬‬



                                                          ‫‪b‬‬




                                                          ‫‪g‬‬

            ‫)1( ﻤﻨﻁﻘﻲ‬                               ‫)0( ﻤﻨﻁﻘﻲ‬


                                                                ‫2 . اﻟﺸﺎﺷﺔ ذات اﻟﻤﮭﺎﺑﻂ اﻟﻤﺸﺘﺮﻛﺔ :‬
‫ﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﺘﻜﻭﻥ ﻤﻬﺎﺒﻁ ﺍﻟﻠﻴﺩﺍﺕ ﺍﻟﺴﺒﻌﺔ ﻤﺘﺼﻠﺔ ﻤﻊ ﺒﻌﻀﻬﺎ ﺍﻟﺒﻌﺽ ﻭﻤﻭﺼﻭﻟﺔ ﺇﻟﻰ ﻗﻁﺏ ﺍﻟﺘﻐﺫﻴﺔ ﻭﻴﻜﻭﻥ ﻤﺼﻌﺩ ﻜل ﻟﻴـﺩ‬
‫ﻤﺘﺼل ﻤﻊ ﺍﻟﻘﻁﺏ ﺍﻟﻤﺴﺅﻭل ﻋﻥ ﺇﻀﺎﺀﺘﻪ ، ﺤﻴﺙ ﺃﻥ ﺍﻟﻠﻴﺩ ﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ‪‬ﻀﺎﺀ ﻋﻨﺩﻤﺎ ﻴﺭﺩ ﻋﻠﻰ ﻤﺼﻌﺩﻩ )1( ﻤﻨﻁﻘﻲ ﻭ ‪‬ﻁﻔﺊ‬
   ‫ﻴ‬                                    ‫ﻴ‬
 ‫ﻋﻨﺩﻤﺎ ﻴﺭﺩ ﻋﻠﻰ ﻤﺼﻌﺩﻩ )0( ﻤﻨﻁﻘﻲ ﻤﻊ ﺍﻷﺨﺫ ﺒﻌﻴﻥ ﺍﻻﻋﺘﺒﺎﺭ ﺃﻥ ﻴﻜﻭﻥ ﻗﻁﺏ ﺍﻟﺘﻐﺫﻴﺔ ﻟﻠﺨﺎﻨﺔ ﻤﻭﺼﻭل ﺇﻟﻰ ﺠﻬﺩ )0( ﻤﻨﻁﻘﻲ‬
                                                ‫ﻭ ‪‬ﺴﻤﻰ ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻋﺎﺩ ﹰ ﻓﻲ ﺍﻟﺴﻭﻕ ‪‬ﻅﻬﺭ ﺭﻗﻤﻲ ﺴﺎﻟﺏ ﻤﺸﺘﺭﻙ .‬
                                                                     ‫ﻤ‬          ‫ﺓ‬                  ‫ﻴ‬
                                    ‫ﻭ ‪‬ﺒ‪‬ﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﺍﻟﻭﺼل ﺍﻟﺩﺍﺨﻠﻲ ﻟﹼﻴﺩﺍﺕ ﻓﻲ ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻤﻥ ﺸﺎﺸﺎﺕ ﺍﻹﻅﻬﺎﺭ :‬
                                                                       ‫ﻠ‬                              ‫ﻴﻴ‬


                  ‫‪a‬‬

                  ‫‪b‬‬




                  ‫‪g‬‬


‫ﺍﻵﻥ ﻭﺒﻔﺭﺽ ﺃﻥ ﻟﺩﻴﻨﺎ ﺸﺎﺸﺔ ﺇﻅﻬﺎﺭ ﺫﺍﺕ ﺍﻟﺴﺒﻊ ﻗﻁﻊ ).‪ (7-Seg‬ﺒﺨﺎﻨﺔ ﻭﺍﺤﺩﺓ ﺫﺍﺕ ﻤﻬﺎﺒﻁ ﻤﺸﺘﺭﻜﺔ )ﺴـﺎﻟﺏ ﻤـﺸﺘﺭﻙ( ﻭ‬
                             ‫ﺴﻨﻜﺘﺏ ﻓﻴﻤﺎ ﻴﻠﻲ ﺍﻟﺤﺎﻻﺕ ﺍﻟﻤﻨﻁﻘﻴﺔ ﻷﻗﻁﺎﺏ ﻫﺫﻩ ﺍﻟﺨﺎﻨﺔ ﺍﻟﻤﻁﻠﻭﺒﺔ ﻟﺘﻤﺜﻴل ﺍﻷﺭﻗﺎﻡ ﺍﻟﻤﺨﺘﻠﻔﺔ :‬




                                                                          ‫اﻟﻔﺎرس ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب واﻹﺗﺼﺎﻻت‬
                                                                        ‫ﺳﻮرﯾﺎ – ﺣﻤﺎه- ھـ-916922 33 369+‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬

                                          ‫ﺸﻜل ﺍﻟﺭﻗﻡ ﻋﻠﻰ‬
‫ﺍﻟﺭﻗﻡ‬   ‫‪a‬‬   ‫‪b‬‬   ‫‪c‬‬   ‫‪d‬‬   ‫‪e‬‬   ‫‪f‬‬     ‫‪g‬‬
                                             ‫ﺍﻟﺸﺎﺸﺔ‬


 ‫0‬      ‫1‬   ‫1‬   ‫1‬   ‫1‬   ‫1‬   ‫1‬     ‫0‬




 ‫1‬      ‫0‬   ‫1‬   ‫1‬   ‫0‬   ‫0‬   ‫0‬     ‫0‬




 ‫2‬      ‫1‬   ‫1‬   ‫0‬   ‫1‬   ‫1‬   ‫0‬     ‫1‬




 ‫3‬      ‫1‬   ‫1‬   ‫1‬   ‫1‬   ‫0‬   ‫0‬     ‫1‬




 ‫4‬      ‫0‬   ‫1‬   ‫1‬   ‫0‬   ‫0‬   ‫1‬     ‫1‬




 ‫5‬      ‫1‬   ‫0‬   ‫1‬   ‫1‬   ‫0‬   ‫1‬     ‫1‬




 ‫6‬      ‫1‬   ‫0‬   ‫1‬   ‫1‬   ‫1‬   ‫1‬     ‫1‬




 ‫7‬      ‫1‬   ‫1‬   ‫1‬   ‫0‬   ‫0‬   ‫0‬     ‫0‬




 ‫8‬      ‫1‬   ‫1‬   ‫1‬   ‫1‬   ‫1‬   ‫1‬     ‫1‬




 ‫9‬      ‫1‬   ‫1‬   ‫1‬   ‫1‬   ‫0‬   ‫1‬     ‫1‬




                                   ‫اﻟﻔﺎرس ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب واﻹﺗﺼﺎﻻت‬
                                 ‫ﺳﻮرﯾﺎ – ﺣﻤﺎه- ھـ-916922 33 369+‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬

                                                                                  ‫ﺸﺭﺡ ﺩﺍﺭﺓ ﺍﻟﻤﺸﺭﻭﻉ :‬
                                                                        ‫ﺇ ‪ ‬ﺍﻟﺩﺍﺭﺓ ﺍﻟﻤﻁﻠﻭﺒﺔ ‪‬ﺒ‪‬ﻨﺔ ﻓﻲ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ :‬
                                                                                            ‫ﻤﻴ‬                  ‫ﻥ‬
‫ﻭﻨﻼﺤﻅ ﻓﻲ ﻫﺫﻩ ﺍﻟﺩﺍﺭﺓ ﺃﻨﻪ ﺘ ‪ ‬ﻭﺼل ﺍﻷﻗﻁﺎﺏ )‪ (a,b,c,d,e,f,g‬ﻟﻠﺨﺎﻨﺎﺕ ﺍﻷﺭﺒﻊ ﻤﻊ ﺃﻗﻁﺎﺏ ﺍﻟﻤﺘﺤﻜﻡ‬
                                                          ‫ﻡ‬
‫)6‪ (PB0,PB1,PB2,PB3,PB4,PB5.PB‬ﻋﻠﻰ ﺍﻟﺘﺭﺘﻴﺏ ، ﻭﺒﺎﻟﺘﺎﻟﻲ ﻓﺈﻥ ﺍﻟﻨﺎﻓﺫﺓ )‪ (B‬ﻓﻲ ﺍﻟﻤﺘﺤﻜﻡ ﻴﺠﺏ ﺃﻥ ﺘﻜﻭﻥ ﻨﺎﻓﺫﺓ‬
‫ﺨﺭﺝ ، ﻜﻤﺎ ﻨﻼﺤﻅ ﻤﻊ ﺃﻥ ﺃﻗﻁﺎﺏ ﺍﻟﺘﻔﻌﻴل ﻟﻠﺨﺎﻨﺎﺕ ﺍﻷﺭﺒﻊ ﺘﻡ ﻭﺼﻠﻬﺎ ﻤﻊ ﺃﻗﻁﺎﺏ ﺍﻟﻤﺘﺤﻜﻡ )0‪ (PD2,PD1,PD‬ﻋﻥ ﻁﺭﻴﻕ‬
‫ﺃﺭﺒﻌﺔ ﺘﺭﺍﻨﺯﺴﺘﻭﺭﺍﺕ ﻤﻥ ﺍﻟﻨﻭﻉ )‪ (NPN‬ﻭﺍﻟﺘﻲ ﺘﻌﻤل ﻜﻤﻔﺘﺎﺡ ﺍﻟﻜﺘﺭﻭﻨﻲ ، ﺇﺫ ﻴﻘﻭﻡ ﻫﺫﺍ ﺍﻟﺘﺭﺍﻨﺯﻴﺴﺘﻭﺭ ﺒﻭﺼل ﻗﻁﺏ ﺍﻟﺘﻔﻌﻴل‬
‫ﻟﻠﺨﺎﻨﺔ ﺇﻟﻰ ﺍﻷﺭﺽ )ﺘﻔﻌﻴل ﻫﺫﻩ ﺍﻟﺨﺎﻨﺔ( ﻋﻨﺩﻤﺎ ﻴﺭﺩ )1( ﻤﻨﻁﻘﻲ ﻋﻠﻰ ﻗﺎﻋﺩﺘﻪ ، ﻭﻴﻘﻭﻡ ﺒﻔﺼل ﻗﻁﺏ ﺍﻟﺘﻔﻌﻴل ﻟﻠﺨﺎﻨﺔ ﻋﻥ‬
                                                  ‫ﺍﻷﺭﺽ )ﺤﺠﺏ ﻫﺫﻩ ﺍﻟﺨﺎﻨﺔ( ﻋﻨﺩﻤﺎ ﻴﺭﺩ )0( ﻤﻨﻁﻘﻲ ﻋﻠﻰ ﻗﺎﻋﺩﺘﻪ .‬
              ‫ﻤﺨﺎﺭﺝ ﺍﻟﻤﺘﺤﻜﻡ ﺍﻟﺘﺎﻟﻴﺔ ﹸﻘﺎﺒل ﻤﺩﺍﺨل ﺸﺎﺸﺔ ﺍﻹﻅﻬﺎﺭ ﺍﻟﺘﺎﻟﻴﺔ :‬
                                              ‫ﺘ‬                         ‫ﺇﺫﺍ ﺩﻗﻘﻨﺎ ﻓﻲ ﺍﻟﺭﺴﻡ ﺍﻟﺘﺨﻁﻴﻁﻲ ﻟﻠﺩﺍﺭﺓ ﻨﺠﺩ ﺃﻥ‬
                           ‫3‪PB7 PB6 PB5 PB4 PB‬‬                          ‫0‪PB2 PB1 PB‬‬
                            ‫*‬       ‫‪g‬‬       ‫‪f‬‬          ‫‪e‬‬        ‫‪d‬‬        ‫‪c‬‬        ‫‪b‬‬     ‫‪a‬‬
‫ﻨﻌﺭﻑ ﺍﻟﺸﻴﻔﺭﺓ ﺍﻟﻤﻘﺎﺒﻠﺔ ﻟﻪ ﻭﺍﻟﺘﻲ ﺘﺅﺩﻱ ﺇﻟﻰ ﺇﻅﻬﺎﺭﻩ ﻋﻠﻰ ﺸﺎﺸﺔ ﺍﻹﻅﻬﺎﺭ ﺤﺘﻰ‬      ‫ﻭﺒﺎﻟﺘﺎﻟﻲ ﻓﺈﻥ ﺃﻱ ﺭﻗﻡ ﻨﺭﻴﺩ ﺇﻅﻬﺎﺭﻩ ﻴﺠﺏ ﺃﻥ‬
‫ﹸﺨ ‪‬ﺠﻬﺎ ﻋﻠﻰ ﺃﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ )‪ ، (B‬ﻓﻤﺜ ﹰ ﻹﻅﻬﺎﺭ ﺍﻟﺭﻗﻡ )1( ﻴﺠﺏ ﺃﻥ ﹸﺨ ‪‬ﺝ ﻋﻠﻰ ﺍﻟﻨﺎﻓﺫﺓ )‪ (B‬ﺍﻟﺭﻗﻡ ﺍﻟﺜﻨﺎﺌﻲ ﺍﻟﺘﺎﻟﻲ‬
                                      ‫ﻨ ﺭ‬                         ‫ﻼ‬                                ‫ﻨ ﺭ‬
                                                       ‫)01100000( ﻭﺍﻟﺫﻱ ﻴﺴﺎﻭﻱ ﺴﺕ ﻋﺸﺭ‪‬ﹰ ﺍﻟﻌﺩﺩ )60‪. (0x‬‬
                                                                      ‫ﻴﺎ‬
                                            ‫ﻭﺍﻵﻥ ﻟﻨﻜﺘﺏ ﺠﺩﻭل ‪‬ﺒﻴﻥ ﺸﻴﻔﺭﺍﺕ ﺍﻷﺭﻗﺎﻡ ﺍﻟﻤﺨﺘﻠﻔﺔ ﻭﻓﻘﹰ ﻟﻠﺘﺭﺘﻴﺏ ﺍﻟﺴﺎﺒﻕ :‬
                                                             ‫ﺎ‬                              ‫ﻴ‬


                                                                                                       ‫ﺍﻟﺭﻗﻡ ﺍﻟﺴﺕ‬
        ‫ﺍﻟﺭﻗﻡ‬     ‫7‪PB‬‬       ‫6‪PB‬‬       ‫5‪PB‬‬        ‫4‪PB‬‬       ‫3‪PB‬‬          ‫2‪PB‬‬       ‫1‪PB‬‬       ‫0‪PB‬‬
                                                                                                         ‫ﻋﺸﺭﻱ‬
        ‫ﺎ‬
        ‫ﻋﺸﺭﻴ ﹰ‬     ‫*‬         ‫‪g‬‬         ‫‪f‬‬          ‫‪e‬‬         ‫‪d‬‬            ‫‪c‬‬         ‫‪b‬‬         ‫‪a‬‬
                                                                                                        ‫ﺍﻟﻤﻜﺎﻓﺊ‬
          ‫0‬         ‫0‬         ‫0‬         ‫1‬         ‫1‬          ‫1‬           ‫1‬          ‫1‬         ‫1‬         ‫‪0x3f‬‬
          ‫1‬         ‫0‬         ‫0‬         ‫0‬         ‫0‬          ‫0‬           ‫1‬          ‫1‬         ‫0‬         ‫60‪0x‬‬
          ‫2‬         ‫0‬         ‫1‬         ‫0‬         ‫1‬          ‫1‬           ‫0‬          ‫1‬         ‫1‬         ‫‪0x5B‬‬
          ‫3‬         ‫0‬         ‫1‬         ‫0‬         ‫0‬          ‫1‬           ‫1‬          ‫1‬         ‫1‬         ‫‪0x4f‬‬
          ‫4‬         ‫0‬         ‫1‬         ‫0‬         ‫1‬          ‫0‬           ‫1‬          ‫1‬         ‫0‬         ‫66‪0x‬‬
          ‫5‬         ‫0‬         ‫1‬         ‫1‬         ‫0‬          ‫1‬           ‫1‬          ‫0‬         ‫1‬         ‫‪0x6d‬‬
          ‫6‬         ‫0‬         ‫1‬         ‫1‬         ‫1‬          ‫1‬           ‫1‬          ‫0‬         ‫0‬         ‫‪0x7c‬‬
          ‫7‬         ‫0‬         ‫0‬         ‫0‬         ‫0‬          ‫0‬           ‫1‬          ‫1‬         ‫1‬         ‫70‪0x‬‬
          ‫8‬         ‫0‬         ‫1‬         ‫1‬         ‫1‬          ‫1‬           ‫1‬          ‫1‬         ‫1‬         ‫‪0x7f‬‬
          ‫9‬         ‫0‬         ‫1‬         ‫1‬         ‫0‬          ‫1‬           ‫1‬          ‫1‬         ‫1‬         ‫‪0x6f‬‬




                                                                               ‫اﻟﻔﺎرس ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب واﻹﺗﺼﺎﻻت‬
                                                                             ‫ﺳﻮرﯾﺎ – ﺣﻤﺎه- ھـ-916922 33 369+‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬




                                                   ‫ﺩﺍﺭﺓ ﺍﻟﻤﺸﺭﻭﻉ‬


                                                                                                           ‫ﺍﻟﺒﺭﻨﺎﻤﺞ :‬
‫ﻨﺭﻴﺩ ﺇﻅﻬﺎﺭ ﺍﻟﺭﻗﻡ 210 ﻋﻠﻰ ﺍﻟﻤﻅﻬﺭﺍﺕ ﺤﻴﺙ ﺍﻷﺤﺎﺩ ﻭﻫﻭ 2 ﻤﺨﺯﻥ ﻓﻲ ﻤﺘﺤﻭل ‪ I‬ﻭﺍﻟﻌﺸﺭﺍﺕ 1 ﻓﻲ ﺍﻟﻤﺘﺤﻭل ‪ j‬ﻭﺍﻟﻤﺌﺎﺕ 0‬
                                                                                                      ‫ﻓﻲ ﺍﻟﻤﺘﺤﻭل ‪. o‬‬


‫>‪#include<90s2313.h‬‬
‫;)‪void delay(void‬‬
‫)(‪main‬‬
‫{‬                                                     ‫ﺘﻌﺭﻴﻑ ﻤﺼﻔﻭﻓﺔ ﻤﻥ ﺃﺠل ﺍﻟﺘﺸﻔﻴﺭ ﻹﻅﻬﺎﺭ ﺍﻷﺭﻗﺎﻡ‬
‫;0=‪unsigned char i=2,j=1,o‬‬
‫;}‪unsigned char decode[10]={0x3f,0x06,0x5B,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x6f‬‬


‫;0=‪PORTD‬‬                             ‫ﺘﻬﻴﺌﺔ ﺍﻟﻤﻨﻔﺫ ‪ D‬ﻜﻠﻪ ﺨﺭﺝ‬
‫;‪DDRD=255; // 255=0xff‬‬

‫;0=‪PORTB‬‬              ‫ﺘﻬﻴﺌﺔ ﺍﻟﻤﻨﻔﺫ ‪ B‬ﻜﻠﻪ ﺨﺭﺝ‬
‫;‪DDRB=0XFF‬‬

‫)1( ‪while‬‬   ‫ﺤﻠﻘﺔ ﻻﻨﻬﺎﺌﻴﺔ‬
 ‫{‬                                             ‫ﻁﺒﻕ ﻋﻠﻰ ﺍﻟﻤﻨﻔﺫ‪ B‬ﺗﺸﻔﯿﺮ ﻋﺪد اﻷﺣﺎد ‪i‬‬
  ‫;]‪PORTB=decode[i‬‬
  ‫ﺘﻔﻌﻴل ﺘﺭﺍﻨﺯﺴﺘﻭﺭ ﺍﻷﺤﺎﺩ // ;1=‪PORTD‬‬
  ‫;)(‪delay‬‬



                                                                                     ‫اﻟﻔﺎرس ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب واﻹﺗﺼﺎﻻت‬
                                                                                   ‫ﺳﻮرﯾﺎ – ﺣﻤﺎه- ھـ-916922 33 369+‬
C ‫ ﺑﻠﻐﺔ‬AVR ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت‬

  PORTD= 0;
  PORTB= decode[j];
  PORTD= 2;
  delay();

  PORTD = 0;
  PORTB = decode[o];
  PORTD = 4;
  delay();
  PORTD = 0;
 }; // end while

} // end main

void delay(void)
{
int x=999;
while (x !=0)
x=x-1;
}




                          ‫اﻟﻔﺎرس ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب واﻹﺗﺼﺎﻻت‬
                        +963 33 229619-‫ﺳﻮرﯾﺎ – ﺣﻤﺎه- ھـ‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬

                                        ‫أﻧﻮاع اﻟﻤﺘﺤﻮﻻت‬
                                        ‫‪Data Types‬‬
         ‫‪Type‬اﻟﻨﻮع‬                     ‫)‪Size (Bits‬اﻟﺤﺠﻢ‬                     ‫‪Range‬اﻟﻤﺠﺎل‬
             ‫‪bit‬‬                               ‫1‬                                ‫1,0‬
            ‫‪char‬‬                               ‫8‬                            ‫721 ‪-128 to‬‬
      ‫‪unsigned char‬‬                            ‫8‬                              ‫552 ‪0 to‬‬
        ‫‪signed char‬‬                            ‫8‬                            ‫721 ‪-128 to‬‬
             ‫‪int‬‬                              ‫61‬                         ‫76723 ‪-32768 to‬‬
          ‫‪short int‬‬                           ‫61‬                         ‫76723 ‪-32768 to‬‬
       ‫‪unsigned int‬‬                           ‫61‬                             ‫53556 ‪0 to‬‬
         ‫‪signed int‬‬                           ‫61‬                         ‫76723 ‪-32768 to‬‬
          ‫‪long int‬‬                            ‫23‬                   ‫7463847412 ‪-2147483648 to‬‬
     ‫‪unsigned long int‬‬                        ‫23‬                         ‫5927694924 ‪0 to‬‬
      ‫‪signed long int‬‬                         ‫23‬                   ‫7463847412 ‪-2147483648 to‬‬
            ‫‪float‬‬                             ‫23‬                     ‫83‪±1.175e-38 to ±3.402e‬‬
           ‫‪double‬‬                             ‫23‬                     ‫83‪±1.175e-38 to ±3.402e‬‬             ‫‪klkll‬‬




                                    ‫ﺗﻮاﺑﻊ اﻟﺘﺄﺧﯿﺮ اﻟﺰﻣﻨﻲ‬
                                    ‫‪Delay Functions‬‬
‫ﺘﻘﻭﻡ ﻫﺫﻩ ﺍﻟﺘﻭﺍﺒﻊ ﺒﺎﻟﻘﻴﺎﻡ ﺒﻌﻤﻠﻴﺔ ﺍﻟﺘﺄﺨﻴﺭ ﺍﻟﺯﻤﻨﻲ ﻓﻲ ﺍﻟﺒﺭﺍﻤﺞ ﺍﻟﻜﺘﻭﺒﺔ ﺒﻠﻐﺔ ﺍﻟـ ‪ C‬ﻭﻫﺫﻩ ﺍﻟﺘﻭﺍﺒﻊ ﻤﻀﻤﻨﺔ ﻓﻲ ﺍﻟﻤﻜﺘﺒﺔ‬
                                ‫)‪ (delay.h‬ﻟﺫﺍ ﻴﺠﺏ ﺇﺩﺭﺍﺝ ﻫﺫﻩ ﺍﻟﻤﻜﺘﺒﺔ ﻗﺒل ﺍﺴﺘﺨﺩﺍﻡ ﺃﻱ ﺘﺎﺒﻊ ﺘﺄﺨﻴﺭ ﺯﻤﻨﻲ .‬
                                                                                        ‫ﻭﻫﺫﻩ ﺍﻟﺘﻭﺍﺒﻊ ﻫﻲ :‬


                              ‫)‪void delay_us(unsigned int n‬‬

   ‫ﻴﻘﻭﻡ ﻫﺫﺍ ﺍﻟﺘﺎﺒﻊ ﺒﺈﺠﺭﺍﺀ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺄﺨﻴﺭ ﺍﻟﺯﻤﻨﻲ ﻓﻲ ﺭﺘﺒﺔ ﺍﻟﻤﺎﻴﻜﺭﻭ ﺜﺎﻨﻴﺔ ﺤﻴﺙ ‪ n‬ﻴﻤﺜل ﺯﻤﻥ ﺍﻟﺘﺄﺨﻴﺭ ﻭﻴﺠﺏ ﺃﻥ‬
                                                                   ‫ﻴﻜﻭﻥ ﻤﻥ ﺍﻟﻨﻤﻁ ‪ integer‬ﺃﻱ ﺼﺤﻴﺢ .‬


                             ‫)‪void delay_ms(unsigned int n‬‬
‫ﻴﻘﻭﻡ ﻫﺫﺍ ﺍﻟﺘﺎﺒﻊ ﺒﺈﺠﺭﺍﺀ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺄﺨﻴﺭ ﺍﻟﺯﻤﻨﻲ ﻓﻲ ﺭﺘﺒﺔ ﺍﻟﻤﻴﻠﻲ ﺜﺎﻨﻴﺔ ﺤﻴﺙ ‪ n‬ﻴﻤﺜل ﺯﻤﻥ ﺍﻟﺘﺄﺨﻴﺭ ﻭﻴﺠﺏ ﺃﻥ ﻴﻜﻭﻥ‬
                                                                         ‫ﻤﻥ ﺍﻟﻨﻤﻁ ‪ integer‬ﺃﻱ ﺼﺤﻴﺢ .‬


            ‫ﻣﻼﺣﻈﺔ ﻋﻨﺪ إدراج ھﺬه اﻟﺘﻮاﺑﻊ ﯾﺠﺐ أن ﻻ ﻧﻀﻊ ‪ void‬وإﻻ ﺳﻮف ﯾﻈﮭﺮ اﻟﻤﺘﺮﺟﻢ ﺑﺄن ھﻨﺎك ﺧﻄﺄ .‬



                                                                    ‫ﺍﻟﻔﺎﺭﺱ ﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺤﺎﺴﻭﺏ ﻭﺍﻹﺘﺼﺎﻻﺕ‬
                                                               ‫ﺴﻭﺭﻴﺎ – ﺤﻤﺎﻩ- ﻫـ-916922 33 369+‬
‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬


                        ‫إدراج ﻟﻐﺔ اﻷﺳﻤﺒﻠﻲ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ .‬
 ‫ﻴﻤﻜﻥ ﺇﺩﺭﺍﺝ ﻟﻐﺔ ﺍﻷﺴﻤﺒﻠﻲ ﻓﻲ ﻜﺘﺎﺒﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻓﻲ ﺃﻱ ﻤﻨﻁﻘﺔ ﻭﺫﻟﻙ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﺘﻭﺠﻴﻪ ‪ #asm‬ﻓﻲ ﺒﺩﺍﻴﺔ ﺍﻟﺘﺼﺭﻴﺢ‬
   ‫ﻋﻥ ﺍﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺒﻌﺩﻩ ﺒﻠﻐﺔ ﺍﻷﺴﻤﺒﻠﻲ ﻭﻴﺠﺏ ﺃﻥ ﻨﻨﺘﻬﻲ ﺒﺎﻟﺘﻭﺠﻴﻪ ‪ #endasm‬ﺩﺍﻻ ً ﻋﻠﻰ ﺍﻨﺘﻬﺎﺀ ﻟﻐﺔ ﺍﻷﺴﻤﺒﻠﻲ .‬
                                                                                ‫ﻋﻠﻰ ﺴﺒﻴل ﺍﻟﻤﺜﺎل :‬



‫‪#asm‬‬
     ‫‪nop‬‬
     ‫‪nop‬‬
‫‪#endasm‬‬


                                              ‫ﺃﻭ ﻴﻜﻨﻨﺎ ﺍﻥ ﻨﻜﺘﺏ ﺍﻟﺘﻭﺍﺒﻊ ﺒﻠﻐﺔ ﺍﻷﺴﻤﺒﻠﻲ ﻓﻲ ﻨﻔﺱ ﺍﻟﺴﻁﺭ .‬
                                                         ‫.‪Inline assembly may also be used‬‬
                                                                                     ‫:‪Example‬‬

‫/* ‪#asm("sei") /* enable interrupts‬‬
    ‫ﻭﻓﻲ ﺤﺎل ﻜﺎﻥ ﻫﻨﺎﻙ ﺃﻜﺜﺭ ﻤﻥ ﺘﻌﻠﻴﻤﺔ ﺃﺴﻤﺒﻠﻲ ﻭﺃﺭﺩﻨﺎ ﻜﺘﺎﺒﺘﻬﺎ ﺒﻨﻔﺱ ﺍﻟﺴﻁﺭ ﻓﻴﺠﺏ ﻋﻨﺩﻫﺎ ﺃﻥ ﻨﻔﺼل ﺒﻴﻥ ﻜل‬
                                                                          ‫ﺘﻌﻠﻴﻤﺔ ﺒﺎﻹﺸﺎﺭﺓ  . ﻤﺜﺎل :‬


‫)"‪#asm("nopnopnop‬‬

                                    ‫اﻟﺘﻮاﺑﻊ اﻟﺮﯾﺎﺿﯿﺔ :‬

                          ‫‪Mathematical Functions‬‬

                                              ‫ﺘﻭﺠﺩ ﻫﺫﻩ ﺍﻟﺘﻭﺍﺒﻊ ﻓﻲ ﺍﻟﻤﻜﺘﺒﺔ ‪ math.h‬ﻭﻫﺫﻩ ﺍﻟﺘﻭﺍﺒﻊ ﻫﻲ :‬


                        ‫)‪unsigned char cabs(signed char x‬‬
                                                    ‫ﺇﺭﺠﺎﻉ ﺍﻟﻘﻴﻤﺔﺍﻟﻤﻁﻠﻘﺔ ﻟﻠﻌﺩﺩ ‪ X‬ﻤﻥ ﺍﻟﻨﻤﻁ ﺍﻟﻤﺤﺭﻓﻲ .‬


                                ‫)‪unsigned int abs(int x‬‬
                                                   ‫ﺇﺭﺠﺎﻉ ﺍﻟﻘﻴﻤﺔ ﺍﻟﻤﻁﻠﻘﺔ ﻟﻠﻌﺩﺩ ‪ X‬ﻤﻥ ﺍﻟﻨﻤﻁ ﺍﻟﺼﺤﻴﺢ .‬


                           ‫)‪unsigned long labs(long int x‬‬
                                            ‫ﺇﺭﺠﺎﻉ ﺍﻟﻘﻴﻤﺔ ﺍﻟﻤﻁﻠﻘﺔ ﻟﻠﻌﺩﺩ ‪ X‬ﻤﻥ ﺍﻟﻨﻤﻁ ﺍﻟﺼﺤﻴﺢ ﺍﻟﻁﻭﻴل .‬


                                    ‫)‪float fabs(float x‬‬
                                                               ‫ﺍﻟﻔﺎﺭﺱ ﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺤﺎﺴﻭﺏ ﻭﺍﻹﺘﺼﺎﻻﺕ‬
                                                          ‫ﺴﻭﺭﻴﺎ – ﺤﻤﺎﻩ- ﻫـ-916922 33 369+‬
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي
برمجات متحكمات بلغة السي

Mais conteúdo relacionado

Mais procurados

Ap i unidade 3 - levantamento de requisitos
Ap i   unidade 3 - levantamento de requisitosAp i   unidade 3 - levantamento de requisitos
Ap i unidade 3 - levantamento de requisitosGlauber Aquino
 
Auto Code Generation and Rapid Brewery/Distillery Automation
Auto Code Generation and Rapid Brewery/Distillery AutomationAuto Code Generation and Rapid Brewery/Distillery Automation
Auto Code Generation and Rapid Brewery/Distillery AutomationDMC, Inc.
 
Windows server , curso completo
Windows server , curso completoWindows server , curso completo
Windows server , curso completoPessoal
 
Apresentação CMMi
Apresentação CMMiApresentação CMMi
Apresentação CMMiFabio Barnes
 
أنواع نظم تشغيل الحاسب
أنواع نظم تشغيل الحاسبأنواع نظم تشغيل الحاسب
أنواع نظم تشغيل الحاسبAhmad Abdelbaqy
 
Introdução a Sistemas Distribuídos
Introdução a Sistemas DistribuídosIntrodução a Sistemas Distribuídos
Introdução a Sistemas DistribuídosVictor Hazin da Rocha
 
Visão Computacional - Meetup AIGirls
Visão Computacional - Meetup AIGirlsVisão Computacional - Meetup AIGirls
Visão Computacional - Meetup AIGirlsSuzana Viana Mota
 
Configurando as ferramentas do Windows Server 2008
Configurando as ferramentas do Windows Server 2008Configurando as ferramentas do Windows Server 2008
Configurando as ferramentas do Windows Server 2008Guilherme Lima
 
مقدمة فى الحاسب الالى
مقدمة فى الحاسب الالىمقدمة فى الحاسب الالى
مقدمة فى الحاسب الالىguest98ae80
 
Métricas de Software
Métricas de SoftwareMétricas de Software
Métricas de Softwareelliando dias
 
Manuel scribus par Terre Nourricière
Manuel scribus par Terre NourricièreManuel scribus par Terre Nourricière
Manuel scribus par Terre NourricièreTerre Nourricière
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionaisguicabral6
 
Testes de regressão automatizados
Testes de regressão automatizadosTestes de regressão automatizados
Testes de regressão automatizadosCristian R. Silva
 
FD.io VPP tap-inject with sample_plugins
FD.io VPP tap-inject with sample_pluginsFD.io VPP tap-inject with sample_plugins
FD.io VPP tap-inject with sample_pluginsNaoto MATSUMOTO
 
222097384 aulas-de-rede-tipos-de-servidores
222097384 aulas-de-rede-tipos-de-servidores222097384 aulas-de-rede-tipos-de-servidores
222097384 aulas-de-rede-tipos-de-servidoresMarco Guimarães
 

Mais procurados (20)

Ap i unidade 3 - levantamento de requisitos
Ap i   unidade 3 - levantamento de requisitosAp i   unidade 3 - levantamento de requisitos
Ap i unidade 3 - levantamento de requisitos
 
Auto Code Generation and Rapid Brewery/Distillery Automation
Auto Code Generation and Rapid Brewery/Distillery AutomationAuto Code Generation and Rapid Brewery/Distillery Automation
Auto Code Generation and Rapid Brewery/Distillery Automation
 
Windows server , curso completo
Windows server , curso completoWindows server , curso completo
Windows server , curso completo
 
Apresentação CMMi
Apresentação CMMiApresentação CMMi
Apresentação CMMi
 
أنواع نظم تشغيل الحاسب
أنواع نظم تشغيل الحاسبأنواع نظم تشغيل الحاسب
أنواع نظم تشغيل الحاسب
 
Introdução a Sistemas Distribuídos
Introdução a Sistemas DistribuídosIntrodução a Sistemas Distribuídos
Introdução a Sistemas Distribuídos
 
Visão Computacional - Meetup AIGirls
Visão Computacional - Meetup AIGirlsVisão Computacional - Meetup AIGirls
Visão Computacional - Meetup AIGirls
 
Configurando as ferramentas do Windows Server 2008
Configurando as ferramentas do Windows Server 2008Configurando as ferramentas do Windows Server 2008
Configurando as ferramentas do Windows Server 2008
 
مقدمة فى الحاسب الالى
مقدمة فى الحاسب الالىمقدمة فى الحاسب الالى
مقدمة فى الحاسب الالى
 
Métricas de Software
Métricas de SoftwareMétricas de Software
Métricas de Software
 
Manuel scribus par Terre Nourricière
Manuel scribus par Terre NourricièreManuel scribus par Terre Nourricière
Manuel scribus par Terre Nourricière
 
Cmmi e mps.Br
Cmmi e mps.BrCmmi e mps.Br
Cmmi e mps.Br
 
Simics - Break the Rules of Product Development
Simics - Break the Rules of Product DevelopmentSimics - Break the Rules of Product Development
Simics - Break the Rules of Product Development
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Testes de regressão automatizados
Testes de regressão automatizadosTestes de regressão automatizados
Testes de regressão automatizados
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 
Aula 04-gerenciamento-basico-de-memoria
Aula 04-gerenciamento-basico-de-memoriaAula 04-gerenciamento-basico-de-memoria
Aula 04-gerenciamento-basico-de-memoria
 
FD.io VPP tap-inject with sample_plugins
FD.io VPP tap-inject with sample_pluginsFD.io VPP tap-inject with sample_plugins
FD.io VPP tap-inject with sample_plugins
 
222097384 aulas-de-rede-tipos-de-servidores
222097384 aulas-de-rede-tipos-de-servidores222097384 aulas-de-rede-tipos-de-servidores
222097384 aulas-de-rede-tipos-de-servidores
 
المحاضرة الثالثة لغات البرمجة
المحاضرة الثالثة  لغات البرمجةالمحاضرة الثالثة  لغات البرمجة
المحاضرة الثالثة لغات البرمجة
 

Destaque

تعلم الميكروكنترولر بسهولة الجزء الاول
تعلم الميكروكنترولر بسهولة الجزء الاولتعلم الميكروكنترولر بسهولة الجزء الاول
تعلم الميكروكنترولر بسهولة الجزء الاولرشا رشا
 
كيف تبني مشروعك في عالم الإلكترونيات
كيف تبني مشروعك في عالم الإلكترونياتكيف تبني مشروعك في عالم الإلكترونيات
كيف تبني مشروعك في عالم الإلكترونياتWikilogia
 
أبشر أيها المريض
أبشر أيها المريضأبشر أيها المريض
أبشر أيها المريضF El Mohdar
 
الخرائط الذهنية طالبات
الخرائط الذهنية طالباتالخرائط الذهنية طالبات
الخرائط الذهنية طالباتInter Mediate
 
صناعة الأبطال
صناعة الأبطالصناعة الأبطال
صناعة الأبطالyashendy
 
حكم و مواعظ تريح القلب
حكم و مواعظ تريح القلبحكم و مواعظ تريح القلب
حكم و مواعظ تريح القلبغايتي الجنة
 
كيف تصنع افكارك
كيف تصنع افكارككيف تصنع افكارك
كيف تصنع افكاركJoOry San
 
ابواب جهنم السبعة
ابواب جهنم السبعةابواب جهنم السبعة
ابواب جهنم السبعةibrahim_2323949
 
مفاتيح وفوائد من بعض سور القران الكريم
مفاتيح وفوائد من بعض سور القران الكريممفاتيح وفوائد من بعض سور القران الكريم
مفاتيح وفوائد من بعض سور القران الكريمغايتي الجنة
 
Sayings from Dr Ibrahim Al Fiky
Sayings from Dr Ibrahim Al FikySayings from Dr Ibrahim Al Fiky
Sayings from Dr Ibrahim Al Fikyislamtics default
 
اجتماعيات ـ نسب الرسول صل الله عليه وسلم
اجتماعيات ـ نسب الرسول صل الله عليه وسلماجتماعيات ـ نسب الرسول صل الله عليه وسلم
اجتماعيات ـ نسب الرسول صل الله عليه وسلمzzaammaa232
 
سوال وجواب
سوال     وجوابسوال     وجواب
سوال وجوابshgawy
 
الاحاديث الصحيحة فى فضائل سور من القران
الاحاديث الصحيحة فى فضائل سور من القرانالاحاديث الصحيحة فى فضائل سور من القران
الاحاديث الصحيحة فى فضائل سور من القرانF El Mohdar
 

Destaque (20)

جميع اوامر لغة الاسمبلي
جميع اوامر لغة الاسمبلي جميع اوامر لغة الاسمبلي
جميع اوامر لغة الاسمبلي
 
تعلم الميكروكنترولر بسهولة الجزء الاول
تعلم الميكروكنترولر بسهولة الجزء الاولتعلم الميكروكنترولر بسهولة الجزء الاول
تعلم الميكروكنترولر بسهولة الجزء الاول
 
أسمبيلي للمبتدئين Assembly
أسمبيلي للمبتدئين Assemblyأسمبيلي للمبتدئين Assembly
أسمبيلي للمبتدئين Assembly
 
كيف تبني مشروعك في عالم الإلكترونيات
كيف تبني مشروعك في عالم الإلكترونياتكيف تبني مشروعك في عالم الإلكترونيات
كيف تبني مشروعك في عالم الإلكترونيات
 
أبشر أيها المريض
أبشر أيها المريضأبشر أيها المريض
أبشر أيها المريض
 
الخرائط الذهنية طالبات
الخرائط الذهنية طالباتالخرائط الذهنية طالبات
الخرائط الذهنية طالبات
 
Lovely8 حكم
Lovely8 حكمLovely8 حكم
Lovely8 حكم
 
صناعة الأبطال
صناعة الأبطالصناعة الأبطال
صناعة الأبطال
 
حكم جميلة
حكم جميلةحكم جميلة
حكم جميلة
 
The Best Arabic Wise Quotes
The Best Arabic Wise QuotesThe Best Arabic Wise Quotes
The Best Arabic Wise Quotes
 
Laysamenna
LaysamennaLaysamenna
Laysamenna
 
حكم و مواعظ تريح القلب
حكم و مواعظ تريح القلبحكم و مواعظ تريح القلب
حكم و مواعظ تريح القلب
 
I Wonder
I WonderI Wonder
I Wonder
 
كيف تصنع افكارك
كيف تصنع افكارككيف تصنع افكارك
كيف تصنع افكارك
 
ابواب جهنم السبعة
ابواب جهنم السبعةابواب جهنم السبعة
ابواب جهنم السبعة
 
مفاتيح وفوائد من بعض سور القران الكريم
مفاتيح وفوائد من بعض سور القران الكريممفاتيح وفوائد من بعض سور القران الكريم
مفاتيح وفوائد من بعض سور القران الكريم
 
Sayings from Dr Ibrahim Al Fiky
Sayings from Dr Ibrahim Al FikySayings from Dr Ibrahim Al Fiky
Sayings from Dr Ibrahim Al Fiky
 
اجتماعيات ـ نسب الرسول صل الله عليه وسلم
اجتماعيات ـ نسب الرسول صل الله عليه وسلماجتماعيات ـ نسب الرسول صل الله عليه وسلم
اجتماعيات ـ نسب الرسول صل الله عليه وسلم
 
سوال وجواب
سوال     وجوابسوال     وجواب
سوال وجواب
 
الاحاديث الصحيحة فى فضائل سور من القران
الاحاديث الصحيحة فى فضائل سور من القرانالاحاديث الصحيحة فى فضائل سور من القران
الاحاديث الصحيحة فى فضائل سور من القران
 

Mais de tahsal99

من الذي حرك الجبن
من الذي حرك الجبنمن الذي حرك الجبن
من الذي حرك الجبنtahsal99
 
لا تحزن
لا تحزنلا تحزن
لا تحزنtahsal99
 
طارق السويدان..مرن عضلات مخك
طارق السويدان..مرن عضلات مخكطارق السويدان..مرن عضلات مخك
طارق السويدان..مرن عضلات مخكtahsal99
 
مقدمة
مقدمةمقدمة
مقدمةtahsal99
 
الباب الرابع
الباب الرابعالباب الرابع
الباب الرابعtahsal99
 
الباب الخامس
الباب الخامسالباب الخامس
الباب الخامسtahsal99
 
الباب الثانى
الباب الثانىالباب الثانى
الباب الثانىtahsal99
 
الباب الثالث
الباب الثالثالباب الثالث
الباب الثالثtahsal99
 
الباب الاول
الباب الاولالباب الاول
الباب الاولtahsal99
 
Software engineering _8th_ed
Software engineering _8th_edSoftware engineering _8th_ed
Software engineering _8th_edtahsal99
 
ماهو نظام ساهر
ماهو نظام ساهرماهو نظام ساهر
ماهو نظام ساهرtahsal99
 

Mais de tahsal99 (12)

من الذي حرك الجبن
من الذي حرك الجبنمن الذي حرك الجبن
من الذي حرك الجبن
 
لا تحزن
لا تحزنلا تحزن
لا تحزن
 
طارق السويدان..مرن عضلات مخك
طارق السويدان..مرن عضلات مخكطارق السويدان..مرن عضلات مخك
طارق السويدان..مرن عضلات مخك
 
مقدمة
مقدمةمقدمة
مقدمة
 
الباب الرابع
الباب الرابعالباب الرابع
الباب الرابع
 
الباب الخامس
الباب الخامسالباب الخامس
الباب الخامس
 
الباب الثانى
الباب الثانىالباب الثانى
الباب الثانى
 
الباب الثالث
الباب الثالثالباب الثالث
الباب الثالث
 
الباب الاول
الباب الاولالباب الاول
الباب الاول
 
Software engineering _8th_ed
Software engineering _8th_edSoftware engineering _8th_ed
Software engineering _8th_ed
 
C#
C#C#
C#
 
ماهو نظام ساهر
ماهو نظام ساهرماهو نظام ساهر
ماهو نظام ساهر
 

برمجات متحكمات بلغة السي

  • 1.
  • 2. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎﺕ‬ ‫‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫‪Programming‬‬ ‫‪Microcontroller‬‬ ‫‪AVR‬‬ ‫‪With‬‬ ‫‪C‬‬ ‫ﺇﻋﺪﺍﺩ : ﺍﺳﻤﺎﻋﻴﻞ ﺍﻟﻄﺮﻭﺩﻱ‬ ‫اﻟﻔﺎرس ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب واﻹﺗﺼﺎﻻت‬ ‫ﺳﻮرﯾﺎ – ﺣﻤﺎه- ھـ-916922 33 369+‬
  • 3. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫ﺑﺴﻢ ﺍﷲ ﺍﻟﺮﺣﻤﻦ ﺍﻟﺮﺣﻴﻢ‬ ‫ﺍﻟﻤﺘﺭﺠﻡ ﺍﻟﺫﻱ ﺴﻭﻑ ﻨﺴﺘﺨﺩﻤﻪ ﻤﻥ ﺃﺠل ﺒﻨﺎﺀ ﺍﻟﺘﻁﺒﻴﻘﺎﺕ ﺒﻠﻐﺔ ﺍﻟـ‪ C‬ﻫﻭ ‪CodeVision‬‬ ‫ﺍﻟﺸﻜل )١( ﻴﻅﻬﺭ ﻟﻨﺎ ﺍﻟﻭﺍﺠﻬﺔ ﺍﻷﺴﺎﺴﻴﺔ ﻟﻬﺫﺍ ﺍﻟﻤﺘﺭﺠﻡ .‬ ‫ﺍﻟﺸﻜل)١( ﺍﻟﻭﺍﺠﻬﺔ ﺍﻷﺴﺎﺴﻴﺔ ﻟﺒﺭﻨﺎﻤﺞ ‪CodeVisionAVR‬‬ ‫ﻭﺃﻭل ﺨﻁﻭﺓ ﻟﻜﺘﺎﺒﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻫﻭ ﺇﻨﺸﺎﺀ ﻤﺸﺭﻭﻉ ﺠﺩﻴﺩ ، ﻴﻭﺠﺩ ﻁﺭﻴﻘﺘﻴﻥ ﻹﻨﺸﺎﺀ ﺍﻟﻤﺸﺭﻭﻉ.‬ ‫ﺍﻟﻁﺭﻴﻘﺔ ﺍﻷﻭﻟﻰ :‬ ‫١: ﻤﻥ ‪ File‬ﻨﺨﺘﺎﺭ ‪ New‬ﻭﻴﻅﻬﺭ ﻟﺩﻴﻨﺎ ﻤﺭﺒﻊ ﺍﻟﺤﻭﺍﺭ ﺍﻟﺸﻜل )٢( ﻨﺨﺘﺎﺭ ‪ Source‬ﻭﻨﺤﻔﻅـﻪ ﺒﺈﺴـﻡ ﺍﻟﻤـﺸﺭﻭﻉ‬ ‫ﻭﻟﻴﻜﻥ ‪ Led‬ﻭﺴﻭﻑ ﻴﻘﻭﻡ ﺍﻟﻤﺘﺭﺠﻡ ﺒﺤﻔﻅﻪ ﺘﻠﻘﺎﺌﻴﹰ ﺒﺎﻤﺘﺩﺍﺩ ‪. Led.c‬‬ ‫ﺎ‬ ‫ﺍﻟﺸﻜل)٢( ﺇﺨﺘﻴﺎﺭﺍﻟﻤﺼﺩﺭ‬ ‫ﺒﻌﺩ ﺫﻟﻙ ﻨﻘﻭﻡ ﺒﺘﻜﺭﺍﺭ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﺴﺎﺒﻘﺔ" ﻤﻥ ‪ File‬ﻨﺨﺘﺎﺭ ‪ " New‬ﻭﻟﻜﻥ ﻨﺨﺘﺎﺭ ﻫﻨﺎ ‪ Project‬ﺍﻟﺸﻜل)٣( ﻭﻴﻅﻬـﺭ‬ ‫ﺒﻌﺩ ﺫﻟﻙ ﻤﺭﺒﻊ ﺤﻭﺍﺭ ﻴﺘـﺴﺎﺌل ﻓﻴﻤـﺎ ﺇﺫﺍ ﻜﻨـﺎ ﻨﺭﻴـﺩ ﺍﺴـﺘﺨﺩﺍﻡ ﺨﺎﺼـﻴﺔ ﺘﻭﻟﻴـﺩ ﺍﻟﻜـﻭﺩ ﺘﻠﻘﺎﺌﻴـﹰ ﺒﺎﺴـﺘﺨﺩﺍﻡ‬ ‫ﺎ‬ ‫‪ CodeWizardAVR‬ﻨﺨﺘﺎﺭ ﻫﻨﺎ ‪ No‬ﺍﻟﺸﻜل )٤( ، ﻓﻴﻁﻠﺏ ﻤﻨﺎ ﺤﻔﻅ ﺍﻟﻤﺸﺭﻭﻉ ﻭﻨﺤﻔﻅﻪ ﺒﺄﻱ ﺍﺴﻡ ﻭﻟﻜﻥ ﻴﻔﻀل‬ ‫ﺃﻥ ﻴﺤﺘﻭﻱ ﻋﻠﻰ ﺩﻻﻟﺔ ﻟﻠﻤﺸﺭﻭﻉ ﺍﻟﺫﻱ ﻴﺘﻡ ﺘﻁﺒﻴﻘﻪ ﻭﻟﻴﻜﻥ "‪ "Led‬ﺍﻟﺸﻜل )٥(، ﺒﻌﺩ ﺫﻟﻙ ﻴﻁﻠﺏ ﻤﻥ ﻤﻠﻑ ﺍﻟﻤـﺼﺩﺭ‬ ‫ﺍﻟﻔﺎﺭﺱ ﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺤﺎﺴﻭﺏ ﻭﺍﻹﺘﺼﺎﻻﺕ‬ ‫ﺴﻭﺭﻴﺎ – ﺤﻤﺎﻩ- ﻫـ-916922 33 369+‬
  • 4. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫ﻟﻠﻤﺸﺭﻭﻉ ﺍﻟﻤﺭﺍﺩ ﺘﻁﺒﻴﻘﻪ ﺍﻟﺸﻜل)٦( ﻭﺒﺎﻟﻀﻐﻁ ﻋﻠﻰ ‪ Add‬ﻴﻅﻬﺭ ﻟﻨﺎ ﻤﺭﺒﻊ ﺤﻭﺍﺭ ﻨﺨﺘﺎﺭ ﻤﻨﻪ ﺍﻟﻤﻠـﻑ ﺍﻟﻤـﺼﺩﺭ‬ ‫ﺍﻟﺫﻱ ﻗﺩ ﻗﻤﻨﺎ ﺒﺈﻨﺸﺎﺌﻪ ﻤﺴﺒﻘﹰ ﺍﻟﺸﻜل )٧( ﻭﻫﻭ "‪ " Led.c‬ﻭﻨﻀﻐﻁ ‪Open‬‬ ‫ﺎ‬ ‫اﻟﺸﻜﻞ)٣( إﺧﺘﯿﺎراﻟﻤﺸﺮوع‬ ‫اﻟﺸﻜﻞ)٤( إﺧﺘﯿﺎرﻃﺮﯾﻘﺔ ﺑﻨﺎء اﻟﻤﺸﺮوع‬ ‫اﻟﺸﻜﻞ )٥(ﺣﻔﻆ ﻣﻠﻒ اﻟﻤﺸﺮوع‬ ‫ﺍﻟﻔﺎﺭﺱ ﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺤﺎﺴﻭﺏ ﻭﺍﻹﺘﺼﺎﻻﺕ‬ ‫ﺴﻭﺭﻴﺎ – ﺤﻤﺎﻩ- ﻫـ-916922 33 369+‬
  • 5. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫اﻟﺸﻜﻞ )٦ ﺗﺤﺪﯾﺪ اﻟﻤﻠﻒ اﻟﻤﺼﺪر ﻟﻠﻤﺸﺮوع‬ ‫اﻟﺸﻜﻞ )٧( ﺗﺤﺪﯾﺪ ﻣﻠﻒ اﻟﻤﺼﺪر‬ ‫ﺍﻟﻔﺎﺭﺱ ﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺤﺎﺴﻭﺏ ﻭﺍﻹﺘﺼﺎﻻﺕ‬ ‫ﺴﻭﺭﻴﺎ – ﺤﻤﺎﻩ- ﻫـ-916922 33 369+‬
  • 6. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫اﻟﻄﺮﯾﻘﺔ اﻟﺜﺎﻧﯿﺔ :‬ ‫ﻤﻥ ‪ File‬ﻨﺨﺘﺎﺭ ‪ New‬ﺜﻡ ﻨﺨﺘﺎﺭ ‪ Project‬ﻓﻴﻅﻬﺭ ﻤﺭﺒﻊ ﺍﻟﺤﻭﺍﺭ ﺍﻟﺴﺎﺒﻕ ﺍﻟﺸﻜل)٤( ﻭﻨﺨﺘﺎﺭ ‪ Yes‬ﻓﻴﻅﻬـﺭ ﻟﻨـﺎ‬ ‫ﻤﺭﺒﻊ ﺍﻟﺤﻭﺍﺭ ﺍﻟﺸﻜل )٨( ﻭﻀﻤﻨﻪ ﻨﺴﺘﻁﻴﻊ ﺃﻥ ﻨﻘﻭﻡ ﺒﺘﺤﺩﻴﺩ ﻜﺜﻴﺭ ﻤﻥ ﺍﻷﻤﻭﺭ ﻤﺜـل ﺍﻟﺤﺎﻟـﺔ ﺍﻟﺒﺩﺍﺌﻴـﺔ ﻟﻠﻤـﺩﺍﺨل‬ ‫ﺍﻟﺩﺨل/ﺨﺭﺝ ﻭﻨﺴﺘﻁﻴﻊ ﺘﺤﺩﻴﺩ ﻨﻤﻁ ﻋﻤل ﺍﻟﻤﺅﻗﺘﺎﺕ ﺃﻭ ﺘﺤﺩﻴﺩ ﺍﻟﺒﻭﺍﺒﺔ ﺍﻟﺘﻲ ﺴـﻭﻑ ﻨﻘـﻭﻡ ﺒﻭﺼـﻠﻬﺎ ﻤـﻊ ﺸﺎﺸـﺔ‬ ‫ﺍﻟـ ‪ LCD‬ﻭﻜﺜﻴﺭ ﻤﻥ ﺍﻷﻤﻭﺭ ﺍﻟﺘﻲ ﺴﻭﻑ ﻨﺘﻁﺭﻕ ﻟﻬﺎ ﻻﺤﻘﹰ ، ﺒﻌﺩ ﺃﻥ ﻨﺨﺘﺎﺭ ﻫﺫﻩ ﺍﻷﻤﻭﺭ ﻨﺨﺘـﺎﺭ ‪" File‬ﻤـﻥ‬ ‫ﺎ‬ ‫ﻤﺭﺒﻊ ﺍﻟﺤﻭﺍﺭ " ﻭﻨﺨﺘﺎﺭ ﺒﻌﺩ ﺫﻟﻙ ‪ Generate Save and Exit‬ﻓﻴﻁﻠﺏ ﻤﻨﺎ ﻓﻲ ﺍﻟﺒﺩﺍﻴـﺔ ﺘﺤﺩﻴـﺩ ﺍﺴـﻡ ﻤﻠـﻑ‬ ‫ﺍﻟﻤﺼﺩﺭ ﺜﻡ ﺍﺴﻡ ﻤﻠﻑ ﺍﻟﻤﺸﺭﻭﻉ ﻭﺒﻌﺩﻫﺎ ﺍﺴﻡ ﻤﻠﻑ ﺍﻟﺘﻭﻟﻴﺩ ﺍﻷﻭﺘﻭﻤﺎﻨﻴﻜﻲ ﻟﻬﺫﺍ ﺍﻟﻤﺸﺭﻭﻉ ﻭﻴﻔﻀل ﺃﻥ ﺴﻜﻭﻥ ﺠﻤﻴـﻊ‬ ‫ﻫﺫﻩ ﺍﻷﺴﻤﺎﺀ ﻤﺘﺸﺎﺒﻬﺔ .‬ ‫اﻟﺸﻜﻞ)٨( ﺗﺠﮭﯿﺰ اﻹﻋﺪادات اﻷوﻟﯿﺔ ﻟﻠﻤﺸﺮوع‬ ‫ﻭﻨﻼﺤﻅ ﺒﻌﺩ ﺫﻟﻙ ﻓﻲ ﻜﻠﺘﺎ ﺍﻟﻁﺭﻴﻘﺘﻴﻥ ﻭﺠﻭﺩ ﻤﻠﻔﻴﻥ ﺍﻷﻭل ﻫﻭ ﻤﻠﻑ ﺍﻟﻤﺼﺩﺭ ﻭﺍﺴﻤﻪ ﻜﻤـﺎ ﺘـﻡ ﺍﺨﺘﻴـﺎﺭﻩ ‪Led.c‬‬ ‫ﺍﻟﺸﻜل)٩( ﻭﺍﻟﺜﺎﻨﻲ ﻤﻠﻑ ﺍﻟﻤﻼﺤﻅﺎﺕ ﺤﻭل ﺍﻟﻤﺸﺭﻭﻉ ﺍﻟﺫﻱ ﻨﺤﻥ ﺒﺼﺩﺩ ﻜﺘﺎﺒﺔ ﺒﺭﻨﺎﻤﺠﻪ ﺍﻟﺸﻜل )٠١( ﻤﺜـل ﻋـﺩﺩ‬ ‫ﺍﻟﻤﺩﺍﺨل ﻭﺍﻟﻤﺨﺎﺭﺝ ﻭﺃﺸﻴﺎﺀ ﺘﺘﻌﻠﻕ ﺒﺎﻟﻤﺸﺭﻭﻉ ﻭﻟﻴﺱ ﻟﻬﺫ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺃﻱ ﺩﻭﺭ ﻓﻲ ﻜﺘﺎﺒﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ.‬ ‫ﺍﻟﻔﺎﺭﺱ ﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺤﺎﺴﻭﺏ ﻭﺍﻹﺘﺼﺎﻻﺕ‬ ‫ﺴﻭﺭﻴﺎ – ﺤﻤﺎﻩ- ﻫـ-916922 33 369+‬
  • 7. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫اﻟﺸﻜﻞ )٩( ﻣﻠﻒ اﻟﻤﺼﺪر‬ ‫اﻟﺸﻜﻞ )٠١( ﻣﻠﻒ اﻟﻤﻼﺣﻈﺎت‬ ‫ﺍﻟﻔﺎﺭﺱ ﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺤﺎﺴﻭﺏ ﻭﺍﻹﺘﺼﺎﻻﺕ‬ ‫ﺴﻭﺭﻴﺎ – ﺤﻤﺎﻩ- ﻫـ-916922 33 369+‬
  • 8. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫ﺒﺭﻨﺎﻤﺞ ﺍﻟﻤﺤﺎﻜﺎﺓ‬ ‫‪Proteus‬‬ ‫ﻴﻭﺠﺩ ﻫﻨﺎﻙ ﺍﻟﻌﺩﻴﺩ ﻤﻥ ﺒﺭﺍﻤﺞ ﺍﻟﻤﺤﺎﻜﺎﺓ ﺍﻟﻤﺴﺘﺨﺩﻤﺔ ﻟﻤﺤﺎﻜﺎﺓ ﺍﻟﺩﺍﺭﺍﺕ ﺍﻹﻟﻜﺘﺭﻭﻨﻴﺔ ﻭﻟﻜﻥ ﺍﻷﻓﻀل ﻭﺍﻷﺭﻭﻉ ﻓﻲ ﻫﺫﺍ‬ ‫ﺍﻟﻤﺠﺎل ﻫﻭ ﺒﺭﻨﺎﻤﺞ ‪ Proteus‬ﺍﻟﺫﻱ ﻴﺘﺼﻑ ﺒﺎﻟﺩﻗﺔ ﻭﺍﻟﺴﻬﻭﻟﺔ ﻓﻲ ﻤﺤﺎﻜﺎﺓ ﺍﻟﻤﺸﺎﺭﻴﻊ ﻭﺨﺼﻭﺼﺎ ً ﺃﻨـﻪ ﻴﺤﺘـﻭﻱ‬ ‫ﻋﻠﻰ ﻤﻜﺎﺘﺏ ﻜﺜﻴﺭﺓ ﻟﻜﺎﻓﺔ ﺍﻟﻘﻁﻊ ﺍﻹﻟﻜﺘﺭﻭﻨﻴﺔ ﻭﻫﻭ ﻴﺴﺘﻁﻴﻊ ﺃﻥ ﻴﺤﺎﻜﻲ ﺍﻟﺩﺍﺭﺍﺕ ﺍﻟﺘﻲ ﺘﺤﺘﻭﻱ ﻋﻠـﻰ ﺍﻟﻤﺘﺤﻜﻤـﺎﺕ‬ ‫‪ Microcontroller‬ﺒﺴﻬﻭﻟﺔ ﺠﺩﺍ ً ﻤﻤﺎ ﻴﺘﻴﺢ ﻟﻠﻤﺼﻤﻡ ﺒﺄﻥ ﻴﺨﺘﺒﺭ ﻋﻤل ﺍﻟﻤﺘﺤﻜﻡ ﻗﺒل ﺃﻥ ﻴﺘﻡ ﺤﻘﻥ ﺍﻟﺒﺭﻨـﺎﻤﺞ ﻓـﻲ‬ ‫ﺍﻟﻤﺘﺤﻜﻡ ﻤﻤﺎ ﺴﻬل ﻋﻤﻠﻴﺔ ﺍﻟﺘﻁﻭﻴﺭ ﻓﻲ ﺍﻟﺒﺭﺍﻤﺞ ﺒﺴﻬﻭﻟﺔ ﻭﺇﻀﺎﻓﺔ ﻟﺫﻟﻙ ﻴﺴﺘﻁﻴﻊ ﺍﻟﻤﺘﺩﺭﺏ ﺃﻭ ﺍﻟﺫﻱ ﻴﺩﺭﺱ ﺒﺭﻤﺠـﺔ‬ ‫ﺍﻟﻤﺘﺤﻜﻤﺎﺕ ﺃﻥ ﻴﺘﻡ ﺇﺨﺘﺒﺎﺭ ﺒﺭﺍﻤﺠﻪ ﻭﻴﻌﺩل ﻋﻠﻴﻬﺎ ﺩﻭﻥ ﺃﻥ ﻴﺘﻡ ﺘﻁﺒﻴﻘﻬﺎ ﻭﺍﻟﺘﻲ ﺘﻜﻠﻑ ﺒﺎﻟﻨﺴﺒﺔ ﻟﻠﻁﺎﻟﺏ .‬ ‫ﻓﻲ ﺍﻟﺒﺩﺍﻴﺔ ﺴﻭﻑ ﻨﺘﻌﺭﻑ ﻋﻠﻰ ﻭﺍﺠﻬﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ :‬ ‫ﺍﻟﻭﺍﺠﻬﺔ ﺍﻟﺭﺌﻴﺴﻴﺔ ﻟﻠﺒﺭﻨﺎﻤﺞ‬ ‫ﻭﺴﻭﻑ ﻨﺘﻌﻠﻡ ﻋﻠﻰ ﺃﻫﻡ ﺍﻟﻤﻜﺘﺒﺎﺕ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻲ ﺍﻟﺒﺩﺍﻴﺔ ﻤﻥ ﺃﺠل ﺠﻠﺏ ﺍﻟﻌﻨﺎﺼﺭ ﺍﻟﺘﻲ ﻨﺭﻴﺩﻫﺎ ﻓﻲ ﺍﻟﻤﺸﺭﻭﻉ ﻨﻨﻘـﺭ‬ ‫ﺒﺎﻟﻤﺅﺸﺭ ﻋﻠﻰ ﺍﻷﻴﻘﻭﻨﺔ ﺍﻟﻤﻭﻀﺤﺔ ﺒﺎﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ :‬ ‫ﺍﻟﻔﺎﺭﺱ ﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺤﺎﺴﻭﺏ ﻭﺍﻹﺘﺼﺎﻻﺕ‬ ‫ﺴﻭﺭﻴﺎ – ﺤﻤﺎﻩ- ﻫـ-916922 33 369+‬
  • 9. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻲ ﺃﻗﺼﻰ ﺍﻟﻴﺴﺎﺭ .‬ ‫ﻓﻲ ﺤﺎل ﻋﺩﻡ ﻅﻬﻭﺭ ﻫﺫﻩ ﺍﻹﺸﺎﺭﺓ ﻴﺠﺏ ﺃﻥ ﻴﻜﻭﻥ ﻤﻀﻐﻭﻁ ﻋﻠﻰ ﺍﻷﻴﻘﻭﻨﺔ‬ ‫ﻭﺒﻌﺩﻫﺎ ﺘﻅﻬﺭ ﻟﻨﺎ ﻭﺍﺠﻬﺔ ﺍﻟﻤﻜﺘﺒﺔ‬ ‫ﺍﻟﻔﺎﺭﺱ ﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺤﺎﺴﻭﺏ ﻭﺍﻹﺘﺼﺎﻻﺕ‬ ‫ﺴﻭﺭﻴﺎ – ﺤﻤﺎﻩ- ﻫـ-916922 33 369+‬
  • 10. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫ﻭﻨﻼﺤﻅ ﻭﺠﻭﺩ ﻤﺭﺒﻊ ﻟﻠﺒﺤﺙ ﻋﻥ ﺍﻟﻌﻨﺼﺭ ﺍﻹﻟﻜﺘﺭﻭﻨﻲ ﺍﻟﺫﻱ ﻨﺭﻴﺩﻩ ﻓﻨﺨﺘﺎﺭ ﺍﻟﻌﻨﺎﺼﺭ ﻤﻥ ﻫﺫﻩ ﺍﻟﻤﻜﺘﺒﺔ ﺜـﻡ ﻨﻐﻠﻘﻬـﺎ‬ ‫ﻭﻨﻼﺤﻅ ﻭﺠﻭﺩ ﻫﺫﻩ ﺍﻟﻌﻨﺎﺼﺭ ﻓﻲ ﻗﺎﺌﻤﺔ ﺍﻷﺠﻬﺯﺓ .‬ ‫ﺤﻘﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻓﻲ ﺍﻟﻤﺘﺤﻜﻡ :‬ ‫ﻤﻥ ﺃﺠل ﺤﻘﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻓﻲ ﺍﻟﻤﺘﺤﻜﻡ ﻨﻀﻐﻁ ﻤﺭﺘﻴﻥ ﻋﻠﻰ ﺍﻟﻤﺘﺤﻜﻡ ﻓﺘﻅﻬﺭ ﻟﻨﺎ ﻤﺭﺒﻊ ﺍﻟﺤﻭﺍﺭﺍﻟﺘﺎﻟﻲ :‬ ‫ﻭﺒﺎﻟﻀﻐﻁ ﻋﻠﻰ ﺍﻟﻤﺠﻠﺩ ﻴﻅﻬﺭ ﻟﻨﺎ ﻤﺭﺒﻊ ﻴﻁﻠﺏ ﻤﻨﺎ ﻤﺴﺎﺭ ﻤﻠﻑ ﺍﻟﻤﺸﺭﻭﻉ ﻭﻫﻭ ﺒﺎﻤﺘﺩﺍﺩ ‪ .hex‬ﻭﺍﻟﺫﻱ ﻴﺘﻭﻟـﺩ ﺃﺜﻨـﺎﺀ‬ ‫ﻋﻤﻠﻴﺔ ﺍﻟﺘﺭﺠﻤﺔ ‪ Compile‬ﻟﻠﻤﺸﺭﻭﻉ ﻭﻴﻜﻭﻥ ﺒﻨﻔﺱ ﺍﻟﻤﺴﺎﺭ ﺍﻟﺫﻱ ﺤﻔﻅﻨﺎ ﻓﻴﻪ ﻫﺫﺍ ﺍﻟﻤﺸﺭﻭﻉ .‬ ‫ﻤﻼﺤﻅﺔ : ﻴﻔﻀل ﺤﻔﻅ ﺍﻟﻤﺸﺭﻭﻉ ﻋﻠﻰ ﺍﻟﺴﻭﺍﻗﺔ ‪ C‬ﻤﻥ ﺃﺠل ﺴﻬﻭﻟﺔ ﻋﻤﻠﻴﺔ ﺍﻟﻤﺤﺎﻜﺎﺓ .‬ ‫ﺍﻟﻔﺎﺭﺱ ﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺤﺎﺴﻭﺏ ﻭﺍﻹﺘﺼﺎﻻﺕ‬ ‫ﺴﻭﺭﻴﺎ – ﺤﻤﺎﻩ- ﻫـ-916922 33 369+‬
  • 11. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫3132‪AT90S‬‬ ‫‪‬‬ ‫‪Features‬‬ ‫اﻟﻤﺰاﯾﺎ‬ ‫ﻴﺘﻤﺘﻊ ﺍﻟﻤﺘﺤﻜﻡ )‪ AT90S2313 (MCU‬ﺒﺎﻟﻤﺯﺍﻴﺎ ﻭ ﺍﻟﻤﻭﺍﺼﻔﺎﺕ ﺍﻟﺘﺎﻟﻴﺔ :‬ ‫• ﺍﺴﺘﺨﺩﻤﺕ ﻋﺎﺌﻠﺔ ‪ AVR‬ﻤﺯﺍﻴﺎ ﺒﻨﻴﺔ ‪ RISC‬ﺍﻟﻤﺤﺴﻨﺔ .‬ ‫• ﺘﺘﻤﺘﻊ ﻋﺎﺌﻠﺔ ‪ AVR‬ﺒﺎﻷﺩﺍﺀ ﺍﻟﻌﺎﻟﻲ ﻭﺒﻁﺎﻗﺔ ﺒﻨﻴﺔ ‪ RISC‬ﺍﻟﻤﻨﺨﻔﻀﺔ .‬ ‫• ﺘﺤﺘﻭﻱ ﻗﺎﺌﻤﺔ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻋﻠﻰ 021 ﺘﻌﻠﻴﻤﺔ ، ﻴﻨﻔﺫ ﻤﻌﻅﻤﻬﺎ ﺨﻼل ﺩﻭﺭﺓ ﺁﻟﺔ ﻭﺍﺤﺩﺓ .‬ ‫• ﺫﺍﻜﺭﺓ ﺒﺭﻨﺎﻤﺞ ﻭﻤﻴﻀﻴﺔ ﻤﺒﻨﻴﺔ ﺩﺍﺨل ﺍﻟﺸﺭﻴﺤﺔ ﺤﺠﻤﻬﺎ ‪ 2Kbyte‬ﻗﺎﺒﻠﺔ ﻹﻋﺎﺩﺓ ﺍﻟﺒﺭﻤﺠﺔ .‬ ‫- ﻨﺎﻓﺫﺓ ﺘﺴﻠﺴﻠﻴﺔ ‪ SPI‬ﻟﺘﺤﻤﻴل ﺍﻟﺒﺭﻨﺎﻤﺞ .‬ ‫- ﺍﻟﺩﻴﻤﻭﻤﺔ : 0001 ﺩﻭﺭﺓ ﻜﺘﺎﺒﺔ/ﻤﺴﺢ .‬ ‫ﺫﺍﻜﺭﺓ ﻤﻌﻁﻴﺎﺕ ‪ EEPROM‬ﺒﻁﻭل ‪. 128bytes‬‬ ‫•‬ ‫- ﺍﻟﺩﻴﻤﻭﻤﺔ :001، 000 ﺩﻭﺭﺓ ﻜﺘﺎﺒﺔ / ﻤﺴﺢ .‬ ‫ﺫﺍﻜﺭﺓ ﻤﻌﻁﻴﺎﺕ ﺩﺍﺨﻠﻴﺔ ‪ RAM‬ﺒﻁﻭل ‪. 128byte‬‬ ‫•‬ ‫ﺍﺜﻨﺎﻥ ﻭ ﺜﻼﺜﻭﻥ ﻤﺴﺠل ﻋﻤل ﻟﻺﻏﺭﺍﺽ ﺍﻟﻌﺎﻤﺔ .‬ ‫•‬ ‫ﺨﻤﺴﺔ ﻋﺸﺭﺓ ﻗﻁﺏ ‪ I/O‬ﻗﺎﺒﻠﺔ ﻟﻠﺒﺭﻤﺠﺔ .‬ ‫•‬ ‫‪. Vcc = 2.7 – 6.0V‬‬ ‫:‬ ‫ﺠﻬﺩ ﺍﻟﺘﻐﺫﻴﺔ‬ ‫•‬ ‫: ‪. Fck = 0 – 20MHz‬‬ ‫ﻤﺠﺎل ﻋﻤل ﺍﻟﻬﺯﺍﺯ‬ ‫•‬ ‫‪ 50ns‬ﻋﻨﺩ ‪. 20MHz‬‬ ‫ﺯﻤﻥ ﺩﻭﺭﺓ ﺍﻟﺘﻌﻠﻴﻤﺔ :‬ ‫•‬ ‫ﻤﺅﻗﺕ/ﻋﺩﺍﺩ ﺒﻁﻭل ‪ 8-bit‬ﺒﻤﻘﺴﻡ ‪ prescaler‬ﻤﻨﻔﺼل .‬ ‫•‬ ‫ﻤﺅﻗﺕ/ﻋﺩﺍﺩ ﺒﻁﻭل ‪ 16-bit‬ﺒﻤﻘﺴﻡ ‪ prescaler‬ﻤﻨﻔﺼل .‬ ‫•‬ ‫ﺒﺄﻨﻤﺎﻁ ﺍﻟﻤﻘﺎﺭﻨﺔ ﻭ ﺍﻟﻤﺴﻙ ‪. capture‬‬ ‫•‬ ‫ﻨﺎﻓﺫﺓ ﺘﺴﻠﺴﻠﻴﺔ ﺜﻨﺎﺌﻴﺔ ﺍﻻﺘﺠﺎﻩ ‪. UART‬‬ ‫•‬ ‫ﺨﺭﺝ ‪ PWM‬ﻗﺎﺒل ﻟﻠﺒﺭﻤﺠﺔ ﺒﺜﻤﺎﻥ ﺃﻭ ﺘﺴﻊ ﺃﻭ ﻋﺸﺭﺓ ﺨﺎﻨﺎﺕ .‬ ‫•‬ ‫ﻤﺼﺎﺩﺭ ﺍﻟﻤﻘﺎﻁﻌﺔ ﺩﺍﺨﻠﻴﺔ ﻭ ﺨﺎﺭﺠﻴﺔ.‬ ‫•‬ ‫ﻤﺅﻗﺕ ﻤﺭﺍﻗﺒﺔ ‪ watchdog‬ﻗﺎﺒل ﻟﻠﺒﺭﻤﺠﺔ ﺩﺨﻠﻪ ﻤﻥ ﺍﻟﻬﺯﺍﺯ ‪ RC‬ﺍﻟﺩﺍﺨﻠﻲ .‬ ‫•‬ ‫ﻤﻘﺎﺭﻥ ﺘﺸﺎﺒﻬﻲ ﻤﺒﻨﻲ ﺩﺍﺨل ﺍﻟﺸﺭﻴﺤﺔ.‬ ‫•‬ ‫ﺃﻨﻤﺎﻁ ﻟﺘﻭﻓﻴﺭ ﺍﻟﻁﺎﻗﺔ : ﻨﻤﻁ ﺍﻟﺒﻁﺎﻟﺔ ، ﻭ ﻨﻤﻁ ﺍﻟﻁﺎﻗﺔ ﺍﻟﺘﺤﺘﻴﺔ .‬ ‫•‬ ‫ﺃﻗﻔﺎل ﺒﺭﻤﺠﻴﺔ ﻟﺤﻤﺎﻴﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ .‬ ‫•‬ ‫ﺸﺭﻴﺤﺔ ﺫﺍﺕ ﻋﺸﺭﻴﻥ ﻗﻁﺒﺎ.‬ ‫ﹰ‬ ‫•‬
  • 12. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫‪Pin Configuration‬‬ ‫أﻗﻄﺎب اﻟﺘﺤﻜﻢ‬ ‫ﻴﺒﻴﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﺃﻗﻁﺎﺏ ﺍﻟﻤﺘﺤﻜﻡ 3132‪AT90S‬‬ ‫أﻗﻄﺎب اﻟﺘﺤﻜﻢ 3132‪AT90S‬‬ ‫‪Pin Description‬‬ ‫ﺸﺭﺡ ﺃﻗﻁﺎﺏ ﺍﻟﻤﺘﺤﻜﻡ‬ ‫‪:Vcc‬‬ ‫ﻗﻁﺏ ﺠﻬﺩ ﺍﻟﺘﻐﺫﻴﺔ ﺍﻟﻤﻭﺠﺏ ‪Vcc = 2.7 – 6.0V‬‬ ‫‪:GND‬‬ ‫ﻗﻁﺏ ﺠﻬﺩ ﺍﻟﺘﻐﺫﻴﺔ ﺍﻟﺼﻔﺭﻱ ‪GND = 0V‬‬ ‫ﺍﻟﻨﺎﻓﺫﺓ ) 0‪: Port B ( PB7 …… PB‬‬ ‫ﻭﻫﻲ ﻋﺒﺎﺭﺓ ﻋﻥ ﻨﺎﻓﺫﺓ ‪ I/O‬ﺫﺍﺕ ﺜﻤﺎﻨﻴﺔ ﺃﻗﻁﺎﺏ ﺜﻨﺎﺌﻴﺔ ﺍﻻﺘﺠﺎﻩ ﻤﺯﻭﺩﺓ ﺒﺘﺭﺍﻨﺯﻴﺴﺘﻭﺭ ﺭﻓﻊ ﺩﺍﺨﻠﻲ ، ﻭﺤﻴﺙ ﺃﻨﻨﺎ ﻨﺴﺘﻁﻴﻊ ﺍﺴﺘﺨﺩﺍﻡ‬ ‫ﺍﻟﻘﻁﺒﻴﻥ 0‪ PB‬ﻭ 1‪ PB‬ﺃﻴﻀﺎ ﻜﻤﺩﺨل ﻤﻭﺠﺏ )0‪ (AIN‬ﻭ ﻤﺩﺨل ﺴﺎﻟﺏ )1‪ (AIN‬ﻋﻠﻰ ﺍﻟﺘﺭﺘﻴﺏ ﻟﻠﻤﻘﺎﺭﻥ ﺍﻟﺘﺸﺎﺒﻬﻲ ﺍﻟﻤﺒﻨﻲ‬ ‫ﹰ‬ ‫ﻋﻠﻰ ﺸﺭﻴﺤﺔ ﺍﻟﻤﺘﺤﻜﻡ ‪. MCU‬‬ ‫ﺘﺘﻤﺘﻊ ﺍﻟﻨﺎﻓﺫﺓ ‪ B‬ﺒﻤﺯﺍﻴﺎ ﺃﺨﺭﻯ ﺨﺎﺼﺔ ﺒﻌﻤل ﺍﻟﻤﺘﺤﻜﻡ ‪ MCU‬ﻭﻫﻲ ﻤﺸﺭﻭﺤﺔ ﻓﻲ ﻓﻘﺭﺓ " ﻨﻭﺍﻓﺫ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ " .‬ ‫ﺍﻟﻨﺎﻓﺫﺓ ) 0‪: Port D ( PD6 …… PD‬‬ ‫ﻭﻫﻲ ﻋﺒﺎﺭﺓ ﻋﻥ ﻨﺎﻓﺫﺓ ‪ I/O‬ﺫﺍﺕ ﺴﺒﻌﺔ ﺃﻗﻁﺎﺏ ﺜﻨﺎﺌﻴﺔ ﺍﻻﺘﺠﺎﻩ ﻤﺯﻭﺩﺓ ﺒﺘﺭﺍﻨﺯﻴﺴﺘﻭﺭ ﺭﻓﻊ ﺩﺍﺨﻠـﻲ ، ﻭﺘﺘﻤﺘـﻊ ﺍﻟﻨﺎﻓـﺫﺓ ‪ D‬ﺒﻤﺯﺍﻴـﺎ‬ ‫ﺃﺨﺭﻯ ﺨﺎﺼﺔ ﺒﻌﻤل ﺍﻟﻤﺘﺤﻜﻡ 3132‪ AT90S‬ﻭﻫﻲ ﻤﺸﺭﻭﺤﺔ ﻓﻲ ﻓﻘﺭﺓ "ﻨﻭﺍﻓﺫ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ".‬ ‫ﻗﻁﺏ ﺍﻟﺘﺼﻔﻴﺭ ‪: RESET‬‬ ‫ﻤﺩﺨل ﺍﻟﺘﺼﻔﻴﺭ . ﻋﻨﺩ ﺘﻁﺒﻴﻕ ﺇﺸﺎﺭﺓ ﻜﻬﺭﺒﺎﺌﻴﺔ ﺫﺍﺕ ﻤﻨﻁﻕ ﻤﻨﺨﻔﺽ ﻋﻠﻰ ﺍﻟﻘﻁﺏ ‪ RESET‬ﻟﻤﺩﺓ ﺩﻭﺭﺘﻲ ﺁﻟﺔ ﺃﺜﻨﺎﺀ ﻋﻤل ﻫﺯﺍﺯ‬ ‫ﺍﻟﺸﺭﻴﺤﺔ ، ﻓﺈﻥ ﺩﺍﺭﺓ ﺍﻟﺘﺼﻔﻴﺭ ﺍﻟﺩﺍﺨﻠﻴﺔ ﺘﻌﻤل ﻋﻠﻰ ﺘﺼﻔﻴﺭ ﺍﻟﻤﺘﺤﻜﻡ ‪. MCU‬‬ ‫1‪: XTAL‬‬ ‫ﻤﺩﺨل ﺍﻟﻬﺯﺍﺯ‬ ‫ﻫﻭ ﻋﺒﺎﺭﺓ ﻋﻥ ﻤﺩﺨل ﻟﻤﻀﺨﻡ ﺍﻟﻬﺯﺍﺯ ﺍﻟﻌﺎﻜﺱ ﻭﻫﻭ ﺃﻴﻀﺎ ﻤﺩﺨل ﻟﺩﺍﺭﺓ ﺘﺸﻐﻴل ﺍﻟﺴﺎﻋﺔ ﺍﻟﺩﺍﺨﻠﻴﺔ .‬ ‫ﹰ‬ ‫2‪: XTAL‬‬ ‫ﻤﺩﺨل ﺍﻟﻬﺯﺍﺯ‬ ‫ﻫﻭ ﻋﺒﺎﺭﺓ ﻋﻥ ﻤﺨﺭﺝ ﻟﻤﻀﺨﻡ ﺍﻟﻬﺯﺍﺯ ﺍﻟﻌﺎﻜﺱ .‬
  • 13. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫ﻟﻤﺤﺔ ﺒﻨﻴﻭﻴﺔ ﻋﻥ ﺍﻟﻤﺘﺤﻜﻡ 3132‪: AT90S‬‬ ‫ﻟﻘﺩ ﺍﻋﺘﻤﺩﺕ ﻤﺘﺤﻜﻤﺎﺕ ‪ AVR‬ﻤﻔﻬﻭﻡ ﺒﻨﻴﺔ ﻫﺎﺭﻓﺎﺭﺩ ‪ Harvard‬ﺍﻟﺘﻲ ﺘﻌﻨﻭﻥ ﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻭ ﺫﺍﻜﺭﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺒﺨﻁﻭﻁ‬ ‫ﻤﻨﻔﺼﻠﺔ ) ﻋﻠﻰ ﺨﻼﻑ ﺍﻟﺒﻨﻴﺔ ﺍﻟﺘﻲ ﻭﻀﻌﻬﺎ ﺍﻟﻌﺎﻟﻡ ﻓﻭﻥ ﻨﻭﻴﻤﺎﻥ ﻓﻲ ﻤﺫﻜﺭﺘﻪ ( . ﺤﻴﺙ ﻴﺘﻡ ﺍﻟﻭﻟﻭﺝ ﻟﺫﺍﻜﺭﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺒﺩﻭﺭﺓ ﻤﻤﺭ‬ ‫ﻭﺍﺤﺩﺓ . ﻓﻌﻨﺩﻤﺎ ﺘﺒﺩﺃ ﻭﺤﺩﺓ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﺭﻜﺯﻴﺔ ‪ CPU‬ﺒﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻷﻭﻟﻰ ، ﻓﺈﻨﻪ ﻴﺘﻡ ﺇﺤﻀﺎﺭ ﺸﻴﻔﺭﺓ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﺎﻟﻴﺔ ﻤﻥ ﺫﺍﻜﺭﺓ‬ ‫ﺍﻟﺒﺭﻨﺎﻤﺞ ، ﻭ ﺒﺎﻟﺘﺎﻟﻲ ﺃﺩﺕ ﻫﺫﻩ ﺍﻟﺒﻨﻴﺔ ﺇﻟﻰ ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺒﺩﻭﺭﺓ ﺴﺎﻋﺔ ﻭﺍﺤﺩﺓ . ﻭﻨﺫﻜﺭ ﻫﻨﺎ ﺃﻥ ﺫﺍﻜﺭﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻫﻲ ﺫﺍﻜﺭﺓ‬ ‫ﻭﻤﻴﻀﻴﺔ ‪ Flash‬ﻗﺎﺒﻠﺔ ﻹﻋﺎﺩﺓ ﺍﻟﺒﺭﻤﺠﺔ ﻤﺒﻨﻴﺔ ﻋﻠﻰ ﺸﺭﻴﺤﺔ ﺍﻟﻤﺘﺤﻜﻡ ‪. MCU‬‬ ‫ﺘﺩﻋﻡ ﻭﺤﺩﺓ ﺍﻟﺤﺴﺎﺏ ﻭ ﺍﻟﻤﻨﻁﻕ ‪ ALU‬ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﺤﺴﺎﺒﻴﺔ ﻭ ﺍﻟﻤﻨﻁﻘﻴﺔ ﺒﻴﻥ ﺍﻟﻤﺴﺠﻼﺕ ﺃﻭ ﺒﻴﻥ ﻋﺩﺩ ﻓﻭﺭﻱ ﺜﺎﺒﺕ ﻭ ﻤﺴﺠل . ﻜﻤﺎ‬ ‫ﺘﻘﻭﻡ ﻭﺤﺩﺓ ﺍﻟﺤﺴﺎﺏ ﻭ ﺍﻟﻤﻨﻁﻕ ﺒﺘﻨﻔﻴﺫ ﺒﻌﺽ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻋﻠﻰ ﻤﺴﺠل ﻭﺤﻴﺩ .‬ ‫ﻭﻴﻘﺼﺩ ﺒﺎﻟﻭﻟﻭﺝ ﺍﻟﺴﺭﻴﻊ ﻟﻤﻠﻑ ﺍﻟﻤﺴﺠﻼﺕ ﺍﻟﺫﻱ ﻴﺤﺘﻭﻱ ﻋﻠﻰ ﺍﺜﻨﻴﻥ ﻭ ﺜﻼﺜﻴﻥ ﻤﺴﺠل ﻋﻤل ﻟﻸﻏﺭﺍﺽ ﺍﻟﻌﺎﻤﺔ ، ﻋﻠﻰ ﺃﻨﻪ ﺍﻟﻭﻟﻭﺝ‬ ‫ﺍﻟﺫﻱ ﻴﺴﺘﻐﺭﻕ ﺯﻤﻥ ﻗﺩﺭﻩ ﺩﻭﺭﺓ ﺴﺎﻋﺔ ﻭﺍﺤﺩﺓ . ﻫﺫﺍ ﻴﻌﻨﻲ ﺃﻨﻪ ﺨﻼل ﺩﻭﺭﺓ ﺴﺎﻋﺔ ﻭﺍﺤﺩﺓ ﺘﻘﻭﻡ ﻭﺤﺩﺓ ﺍﻟﺤﺴﺎﺏ ﻭ ﺍﻟﻤﻨﻁﻕ ‪ALU‬‬ ‫) ‪ ( Arithmetic Logic Unit‬ﺒﺘﻨﻔﻴﺫ ﻋﻤﻠﻴﺔ ﻭﺍﺤﺩﺓ ، ﻓﻬﻲ ﺘﻘﻭﻡ ﺃﻭﻻ ﺒﺈﺨﺭﺍﺝ ﺍﻟﻤﻌﺎﻤﻠﻴﻥ ﻤﻥ ﻤﻠﻑ ﺍﻟﺴﺠﻼﺕ ، ﻭﻤﻥ ﺜﻡ ﺘﻨﻔﺫ‬ ‫ﹰ‬ ‫ﺍﻟﻌﻤﻠﻴﺔ ، ﻭﻤﻥ ﺜﻡ ﺘﻌﻴﺩ ﺘﺨﺯﻴﻥ ﺍﻟﻨﺘﻴﺠﺔ ﻓﻲ ﻤﻠﻑ ﺍﻟﻤﺴﺠﻼﺕ. ﻭﻜل ﺫﻟﻙ ﻴﺘﻡ ﺨﻼل ﺩﻭﺭﺓ ﺴﺎﻋﺔ ﻭﺍﺤﺩﺓ.‬ ‫ﻴﺒﻴﻥ ﺍﻟﺸﻜل ) ٢ ( ﺨﺭﻴﻁﺔ ﺫﺍﻜﺭﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻭ ﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﻁﻴﺎﺕ :‬ ‫ﺒﺎﻹﻀﺎﻓﺔ ﻟﻔﻌﺎﻟﻴﺔ ﺍﻟﻤﺴﺠل ، ﻓﺈﻨﻨﺎ ﻨﺴﺘﻁﻴﻊ ﺍﺴﺘﺨﺩﺍﻡ ﺃﻨﻤﺎﻁ ﻋﻨﻭﻨﺔ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺘﻘﻠﻴﺩﻴﺔ ﻟﻌﻨﻭﻨﺔ ﻤﻠﻑ ﺍﻟﻤﺴﺠﻼﺕ ﺃﻴﻀﺎ . ﻭ ﻫﺫﺍ ﻤﺘﺎﺡ‬ ‫ﹰ‬ ‫ﻋﻠﻰ ﺍﻋﺘﺒﺎﺭ ﺃﻥ ﻤﻠﻑ ﺍﻟﻤﺴﺠﻼﺕ ﻤﻌﻴﻥ ﺒﺎﺜﻨﻴﻥ ﻭ ﺜﻼﺜﻴﻥ ﻤﺴﺠﻼ ﻤﺘﻭﻀﻌﺔ ﻋﻨﺩ ﺤﻴﺯ ﻋﻨﻭﻨﺔ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﺴﻔﻠﻲ ) ‪( $00 - $1F‬‬ ‫ﹰ‬ ‫ﻤﻤﺎ ﻴﺴﻤﺢ ﻟﻨﺎ ﺒﺎﻟﻭﻟﻭﺝ ﺇﻟﻰ ﻤﻠﻑ ﺍﻟﻤﺴﺠﻼﺕ ﻜﻤﻭﺍﻗﻊ ﺫﺍﻜﺭﻴﺔ .ﻜﻤﺎ ﻴﺤﺘﻭﻱ ﺤﻴﺯ ﺫﺍﻜﺭﺓ ‪ I/O‬ﻋﻠﻰ ﺃﺭﺒﻊ ﻭﺴﺘﻴﻥ ﻋﻨﻭﺍﻨﺎ ﻤﺨﺼﺼﺔ‬ ‫ﹰ‬ ‫ﻟﻭﻅﺎﺌﻑ ﻭﺤﺩﺓ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﺭﻜﺯﻴﺔ ‪ CPU‬ﺍﻟﻤﺤﻴﻁﻴﺔ ‪ ، peripheral‬ﻤﺜل ﻤﺴﺠﻼﺕ ﺍﻟﺘﺤﻜﻡ ، ﺍﻟﻤﺅﻗﺘﺎﺕ/ﺍﻟﻌﺩﺍﺩﺍﺕ ، ﺍﻟﻤﺒﺩﻻﺕ‬ ‫‪ ، A/D‬ﻭ ﻭﻅﺎﺌﻑ ‪ I/O‬ﺍﻷﺨﺭﻯ . ﻭﻨﺴﺘﻁﻴﻊ ﺍﻟﻭﻟﻭﺝ ﺇﻟﻰ ﺤﻴﺯ ‪ I/O‬ﺒﺸﻜل ﻤﺒﺎﺸﺭ ، ﺃﻭ ﻤﻥ ﺨﻼل ﻋﻨﺎﻭﻴﻥ ﺤﻴﺯ ﺍﻟﻤﻌﻁﻴﺎﺕ‬ ‫ﺍﻟﺘﺎﻟﻲ ﻟﻤﻠﻑ ﺍﻟﻤﺴﺠﻼﺕ ) ‪( $20 - $5F‬‬
  • 14. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫ﻴﺘﻭﻀﻊ ﺍﻟﻤﻜﺩﺱ ﻓﻌﻠﻴﺎ ﻓﻲ ﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﻌﺎﻤﺔ ‪ ، SRAM‬ﻭ ﺒﺎﻟﺘﺎﻟﻲ ﻓﺈﻥ ﺤﺠﻡ ﺍﻟﻤﻜﺩﺱ ﻴﺘﺤﺩﺩ ﻓﻘﻁ ﺒﺤﺠﻡ ﺍﻟﺫﺍﻜﺭﺓ ‪SRAM‬‬ ‫ﹰ‬ ‫ﺍﻹﺠﻤﺎﻟﻲ . ﻭﻴﻘﻊ ﻋﻠﻰ ﻋﺎﺘﻕ ﺍﻟﻤﺒﺭﻤﺞ ﺘﻬﻴﺌﺔ ﻤﺅﺸﺭ ﺍﻟﻤﻜﺩﺱ ‪ SP‬ﻓﻲ ﺭﻭﺘﻴﻥ ﺨﺩﻤﺔ ﺍﻟﺘﺼﻔﻴﺭ ‪ reset‬ﻭﺫﻟﻙ ﻗﺒل ﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﺍﻤﺞ‬ ‫ﺍﻟﻔﺭﻋﻴﺔ ﻭ ﺍﻟﻤﻘﺎﻁﻌﺎﺕ . ﻭﻤﺅﺸﺭ ﺍﻟﻤﻜﺩﺱ ﻫﻭ ﻋﺒﺎﺭﺓ ﻋﻥ ﻤﺴﺠل ﺒﻌﺭﺽ ‪ 8–bit‬ﻨﺴﺘﻁﻴﻊ ﻗﺭﺍﺀﺘﻪ ﺃﻭ ﺍﻟﻜﺘﺎﺒﺔ ﻋﻠﻴﻪ ، ﻭﻴﺘﻡ‬ ‫ﺍﻟﻭﺼﻭل ﺇﻟﻴﻪ ﺒﻌﻨﻭﺍﻨﻪ ﺍﻟﻤﺘﻭﻀﻊ ﻓﻲ ﺤﻴﺯ ﺫﺍﻜﺭﺓ ‪. I/O‬‬ ‫ﻤﻠﻑ ﺍﻟﻤﺴﺠﻼﺕ ﺫﺍﺕ ﺍﻷﻏﺭﺍﺽ ﺍﻟﻌﺎﻤﺔ :‬ ‫‪‬ﺒﻴﻥ ﺍﻟﺸﻜل ) ٣ ( ﺘﺭﻜﻴﺒﺔ ﻤﺴﺠﻼﺕ ﺍﻷﻏﺭﺍﺽ ﺍﻟﻌﺎﻤﺔ ﺍﻻﺜﻨﻴﻥ ﻭ ﺍﻟﺜﻼﺜﻴﻥ ﻓﻲ ﻭﺤﺩﺓ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﺭﻜﺯﻴﺔ ‪. CPU‬‬ ‫ﻴ‪‬‬ ‫ﻴﺘﺄﻟﻑ ﻤﻠﻑ ﺍﻟﻤﺴﺠﻼﺕ ﻤﻥ ﺍﺜﻨﻴﻥ ﻭ ﺜﻼﺜﻴﻥ ﻤﺴﺠل ﻋﻤل ، ﺘﺸﻜل ﺁﺨﺭ ﺴﺘﺔ ﻤﻥ ﻫﺫﻩ ﺍﻟﻤﺴﺠﻼﺕ ﺜﻼﺙ ﻤﺴﺠﻼﺕ ﻤﺅﺸﺭ ﺒﻁﻭل‬ ‫‪ 16-bit‬ﺘﺴﺘﺨﺩﻡ ﻓﻲ ﺍﻟﻌﻨﻭﻨﺔ ﻏﻴﺭ ﺍﻟﻤﺒﺎﺸﺭﺓ ﻟﻌﻨﻭﻨﺔ ﺤﻴﺯ ﺍﻟﻤﻌﻁﻴﺎﺕ ، ﻭﺍﻟﺘﻲ ﺘﺴﻬل ﺤﺴﺎﺏ ﺍﻟﻌﻨﻭﺍﻥ ﺍﻟﻔﻌﺎل ، ﻜﻤﺎ ﻴﺴﺘﺨﺩﻡ ﺃﺤﺩ‬ ‫ﻫﺫﻩ ﺍﻟﻤﺴﺠﻼﺕ ﺍﻟﺜﻼﺙ ﻜﻤﺅﺸﺭ ﻋﻨﻭﻨﺔ ﻟﻠﺠﺩﺍﻭل ﺍﻟﻤﻨﺸﺄﺓ ﻓﻲ ﺫﺍﻜﺭﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ ‪ . Flash‬ﻨﺭﻤﺯ ﻟﻬﺫﻩ ﺍﻟﻤﺴﺠﻼﺕ ﺍﻟﺜﻼﺙ ﺒﺎﻟﺭﻤﻭﺯ‬ ‫ﺍﻟﺘﺎﻟﻴﺔ : ﺍﻟﻤﺴﺠل ‪ ، X‬ﺍﻟﻤﺴﺠل ‪ ، Y‬ﺍﻟﻤﺴﺠل ‪. Z‬‬ ‫ﺇﻥ ﺘﻌﻠﻴﻤﺎﺕ ﻤﺴﺠل ﺍﻟﻌﻤل ﻓﻲ ﻤﺠﻤﻭﻋﺔ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻟﻬﺎ ﺩﻭﺭﺓ ﺴﺎﻋﺔ ﻭﺍﺤﺩﺓ ﻭ ﺫﻟﻙ ﺒﺎﻟﻨﺴﺒﺔ ﻟﻜﺎﻤل ﻤﻠﻑ ﺍﻟﻤﺴﺠﻼﺕ . ﻴﺴﺘﺜﻨﻰ ﻤﻥ‬ ‫ﺫﻟﻙ ﻓﻘﻁ ﺨﻤﺱ ﺘﻌﻠﻴﻤﺎﺕ ﺤﺴﺎﺒﻴﺔ ﻭ ﻤﻨﻁﻘﻴﺔ : ‪ ORI ، ANDI ، CPI ، SUBI ، SBCI‬ﺒﻴﻥ ﻋﺩﺩ ﺜﺎﺒﺕ ﻭﻤﺴﺠل ، ﻭﻜﺫﻟﻙ‬ ‫ﺒﺎﻟﻨﺴﺒﺔ ﻟﺘﻌﻠﻴﻤﺔ ﺘﺤﻤﻴل ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﺜﺎﺒﺘﺔ ﺍﻟﻔﻭﺭﻴﺔ ‪ . LDI‬ﻭ ﺘﻁﺒﻕ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻋﻠﻰ ﻤﺴﺠﻼﺕ ﺍﻟﻨﺼﻑ ﺍﻟﺜﺎﻨﻲ ﻟﻤﻠﻑ‬ ‫‪ OR ،AND ،CP ،SUB‬ﻭﻜل ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻷﺨﺭﻯ ﺒﻴﻥ ﻤﺴﺠﻠﻴﻥ‬ ‫ﺍﻟﻤﺴﺠﻼﺕ 31‪. R16…R‬ﻜﻤﺎ ﺘﻁﺒﻕ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ‪،SBC‬‬ ‫ﺃﻭ ﻋﻠﻰ ﻤﺴﺠل ﻭﺤﻴﺩ ﻋﻠﻰ ﻜﺎﻤل ﻤﻠﻑ ﺍﻟﻤﺴﺠﻼﺕ. ﻭ ﻨﻼﺤﻅ ﻜﻤﺎ ﻫﻭ ﻤﺒﻴﻥ ﻓﻲ ﺍﻟﺸﻜل ) ٢ ( ، ﺃﻥ ﻟﻜل ﻤﺴﺠل ﻋﻨﻭﺍﻥ ﻓﻲ ﺤﻴﺯ‬ ‫ﻋﻨﻭﻨﺔ ﺫﺍﻜﺭﺓ ﺍﻟﻤﻌﻁﻴﺎﺕ ، ﻭﺘﺤﺘل ﻫﺫﻩ ﺍﻟﻤﺴﺠﻼﺕ ﻋﻠﻰ ﺨﺭﻴﻁﺔ ﺍﻟﺫﺍﻜﺭﺓ ﺃﻭل ﺍﺜﻨﺎﻥ ﻭ ﺜﻼﺜﻭﻥ ﻤﻭﻗﻌﺎ .‬ ‫ﹰ‬ ‫ﻭﻤﻤﺎ ﻴﺠﺩﺭ ﺫﻜﺭﻩ ﻫﻨﺎ ﺃﻥ ﻤﻠﻑ ﺍﻟﻤﺴﺠﻼﺕ ﻟﻴﺱ ﻤﻨﺠﺯﺍ ﻓﻴﺯﻴﺎﺌﻴﺎ ﻜﻤﻭﺍﻗﻊ ﺍﻟﺫﺍﻜﺭﺓ ‪ ، SRAM‬ﻭﻟﻘﺩ ﻤﻨﺢ ﻫﺫﺍ ﺍﻟﺘﻨﻅﻴﻡ ﻟﻠﺫﺍﻜﺭﺓ ﻤﺭﻭﻨﺔ‬ ‫ﹰ‬ ‫ﹰ‬ ‫ﻜﺒﻴﺭﺓ ﻓﻲ ﺍﻟﻭﻟﻭﺝ ﻟﻠﻤﺴﺠﻼﺕ ، ﻤﺜل ﺍﻟﻤﺴﺠﻼﺕ ‪ Z، Y ،X‬ﺍﻟﺘﻲ ﺘﻌﻤل ﻜﻤﺅﺸﺭﺍﺕ ﻷﻱ ﻤﺴﺠل ﻓﻲ ﻤﻠﻑ ﺍﻟﻤﺴﺠﻼﺕ .‬
  • 15. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫ﺤﻴﺯ ﺫﺍﻜﺭﺓ ‪: I/O‬‬ ‫ﺘﺘﻭﻀﻊ ﻤﺨﺘﻠﻑ ﺍﻟﻭﻅﺎﺌﻑ ﺍﻟﻤﺤﻴﻁﻴﺔ ﻭ ﻭﻅﺎﺌﻑ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ ﻟﻠﻤﺘﺤﻜﻡ 3132‪ AT90S‬ﻓﻲ ﺤﻴﺯ ﺫﺍﻜﺭﺓ ‪ . I/O‬ﻭ ﻴﺘﻡ ﺍﻟﻭﻟﻭﺝ‬ ‫ﺇﻟﻰ ﻤﺨﺘﻠﻑ ﻤﻭﺍﻗﻊ ‪ I/O‬ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﺘﻌﻠﻴﻤﺘﻴﻥ ‪ IN‬ﻭ ‪ OUT‬ﺍﻟﻠﺘﻴﻥ ﺘﺤﻭﻻﻥ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻤﺎ ﺒﻴﻥ ﻤﺴﺠﻼﺕ ﺍﻟﻌﻤل ﺍﻻﺜﻨﻴﻥ ﻭﺍﻟﺜﻼﺜﻴﻥ‬ ‫ﺫﺍﺕ ﺍﻷﻏﺭﺍﺽ ﺍﻟﻌﺎﻤﺔ ﻭ ﺤﻴﺯ ﺫﺍﻜﺭﺓ ‪ . I/O‬ﻭﻨﺴﺘﻁﻴﻊ ﺍﻟﻭﻟﻭﺝ ﺇﻟﻰ ﺨﺎﻨﺎﺕ ﻤﺴﺠﻼﺕ ﺤﻴﺯ ‪ I/O‬ﺍﻟﻭﺍﻗﻌﺔ ﻀﻤﻥ ﻤﺠﺎل ﺍﻟﻌﻨﺎﻭﻴﻥ (‬ ‫) ‪ $20 - $5F‬ﺒﺸﻜل ﻤﺒﺎﺸﺭ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﺘﻌﻠﻴﻤﺘﻴﻥ ‪ CBI‬ﻭ ‪ ،SBI‬ﻭﻜﺫﻟﻙ ﻴﻤﻜﻨﻨﺎ ﻓﺤﺹ ﺃﻱ ﺨﺎﻨﺔ ﻤﻥ ﻫﺫﻩ ﺍﻟﻤﺴﺠﻼﺕ ﺒﺎﺴﺘﺨﺩﺍﻡ‬ ‫ﺍﻟﺘﻌﻠﻴﻤﺘﻴﻥ ‪ SBIS‬ﻭ ‪. SBIC‬‬ ‫ﻤﻼﺤﻅﺔ : ﻋﻨﺩﻤﺎ ﻨﺴﺘﺨﺩﻡ ﺃﻭﺍﻤﺭ ﻤﺤﺩﺩﺓ ﻋﻠﻰ ﺤﻴﺯ ﺫﺍﻜﺭﺓ ‪ ، I/O‬ﻓﺈﻨﻪ ﻴﺠﺏ ﺍﺴﺘﺨﺩﺍﻡ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ : ‪، SBIS ،OUT ،IN‬‬ ‫‪ SBIC‬ﻤﻊ ﻋﻨﺎﻭﻴﻥ ﺤﻴﺯ ‪ . ( $00 - $3F ) I/O‬ﻭﻋﻨﺩ ﻋﻨﻭﻨﺔ ﻤﺴﺠﻼﺕ ﺤﻴﺯ ‪ I/O‬ﻜﺫﺍﻜﺭﺓ ﻤﻌﻁﻴﺎﺕ ‪ SRAM‬ﻓﺈﻨﻪ ﻴﺠﺏ‬ ‫ﺇﻀﺎﻓﺔ ﺍﻟﻘﻴﻤﺔ 02$ ﺇﻟﻰ ﻫﺫﺍ ﺍﻟﻌﻨﻭﺍﻥ .‬
  • 16. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫‪I/O Ports‬‬ ‫ﻨﻭﺍﻓﺫ ﺍﻟﺩﺨل/ﺍﻟﺨﺭﺝ‬ ‫‪Port B‬‬ ‫ﺍﻟﻨﺎﻓﺫﺓ ‪B‬‬ ‫ﺍﻟﻨﺎﻓﺫﺓ ‪ B‬ﻫﻲ ﻋﺒﺎﺭﺓ ﻋﻥ ﻨﺎﻓﺫﺓ ﺩﺨل/ﺨﺭﺝ ﺜﻨﺎﺌﻴﺔ ﺍﻻﺘﺠﺎﻩ ﺫﺍﺕ ﺜﻤﺎﻨﻴﺔ ﺃﻗﻁﺎﺏ ‪. 8-bit bi-directional‬‬ ‫ﺘﺘﻭﻀﻊ ﻋﻨﺎﻭﻴﻥ ﻤﺴﺠﻼﺕ ﺍﻟﻨﺎﻓﺫﺓ ‪ B‬ﺍﻟﺜﻼﺙ ﻓﻲ ﺤﻴﺯ ﺫﺍﻜﺭﺓ ‪ I/O‬ﻭﻫﻲ : ﻤﺴﺠل ﺍﻟﻤﻌﻁﻴﺎﺕ ‪ PORTB‬ﺍﻟـﺫﻱ ﻴﺘﻭﻀـﻊ ﻋﻨـﺩ‬ ‫ﺍﻟﻌﻨﻭﺍﻥ )83$(81$ ، ﻤﺴﺠل ﺍﺘﺠﺎﻩ ﺍﻟﻤﻌﻁﻴﺎﺕ ‪ DDRB‬ﺍﻟﺫﻱ ﻴﺘﻭﻀﻊ ﻋﻨﺩ ﺍﻟﻌﻨﻭﺍﻥ )73$(71$ ، ﻋﻨﻭﺍﻥ ﺃﻗﻁﺎﺏ ﺩﺨل ﺍﻟﻨﺎﻓﺫﺓ‬ ‫‪ PINB – B‬ﺍﻟﺫﻱ ﻴﺘﻭﻀﻊ ﻋﻨﺩ ﺍﻟﻌﻨﻭﺍﻥ )63$(61$ . ﻭﻴﺠﺏ ﺍﻻﻨﺘﺒﺎﻩ ﺇﻟﻰ ﺃﻥ ﻋﻨﻭﺍﻥ ﺃﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪ B‬ﻴﻘﺭﺃ ﻓﻘﻁ ، ﺒﻴﻨﻤﺎ ﺘﻨﻔـﺫ‬ ‫‪MOS‬‬ ‫ﻋﻤﻠﻴﺎﺕ ﺍﻟﻘﺭﺍﺀﺓ ﻭﺍﻟﻜﺘﺎﺒﺔ ﻋﻠﻰ ﻤﺴﺠل ﺍﻟﻤﻌﻁﻴﺎﺕ ﻭ ﻤﺴﺠل ﺍﺘﺠﺎﻩ ﺍﻟﻤﻌﻁﻴﺎﺕ . ﺘﺘﻡ ﻋﻤﻠﻴﺔ ﺍﺨﺘﻴﺎﺭ ﺘﺭﺍﻨﺯﻴـﺴﺘﻭﺭ ﺍﻟﺭﻓـﻊ‬ ‫‪ pull-up‬ﺒﺸﻜل ﻤﺴﺘﻘل ﻟﻜل ﻗﻁﺏ ﻤﻥ ﺃﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪ . B‬ﻭﺒﺎﺴﺘﻁﺎﻋﺔ ﺩﺍﺭﺓ ﻗﻴﺎﺩﺓ ﺨﺭﺝ ﺍﻟﻨﺎﻓﺫﺓ ‪ B‬ﺘﻘﺩﻴﻡ ﺘﻴـﺎﺭ ﻗـﺩﺭﻩ ‪20mA‬‬ ‫ﻗﺎﺩﺭ ﻋﻠﻰ ﻗﻴﺎﺩﺓ ﻭﺤﺩﺓ ﺇﻅﻬﺎﺭ ‪ LED‬ﺒﺸﻜل ﻤﺒﺎﺸﺭ . ﻭﻋﻨﺩ ﺍﺴﺘﺨﺩﺍﻡ ﺃﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪ B‬ﻜﺄﻗﻁﺎﺏ ﺩﺨل ، ﻓﺈﻨﻬﺎ ﺘﺼﺒﺢ ﻤﻨﺒﻌﺎ ﻟﻠﺘﻴـﺎﺭ‬ ‫ﹰ‬ ‫ٍ‬ ‫)‪ (IIL‬ﻋﻨﺩ ﺭﺒﻁﻬﺎ ﺨﺎﺭﺠﻴﺎ ﻤﻊ ﺍﻟﻤﻨﻁﻕ ﺍﻟﻤﻨﺨﻔﺽ ﻭ ﺫﻟﻙ ﺇﺫﺍ ﻜﺎﻥ ﺘﺭﺍﻨﺯﻴﺴﺘﻭﺭ ﺍﻟﺭﻓﻊ ﺍﻟﺩﺍﺨﻠﻲ ‪‬ﻔﻐﻼ .‬ ‫ﻤ ﹼﹰ‬ ‫ﹰ‬ ‫ﻷﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪ B‬ﻭﻅﺎﺌﻑ ﺃﺨﺭﻯ ﻤﺒﻴﻨﺔ ﻓﻲ ﺍﻟﺠﺩﻭل )61( ﺍﻟﺘﺎﻟﻲ :‬ ‫ﺍﻟﻭﻅﻴﻔﺔ ﺍﻟﺨﺎﺼﺔ‬ ‫ﻗﻁﺏ ﺍﻟﻨﺎﻓﺫﺓ‬ ‫0‪ ) AIN‬ﺍﻟﻤﺩﺨل ﺍﻟﻤﻭﺠﺏ ﻟﻠﻤﻘﺎﺭﻥ ﺍﻟﺘﺸﺎﺒﻬﻲ (‬ ‫0‪PB‬‬ ‫1‪ ) AIN‬ﺍﻟﻤﺩﺨل ﺍﻟﺴﺎﻟﺏ ﻟﻠﻤﻘﺎﺭﻥ ﺍﻟﺘﺸﺎﺒﻬﻲ (‬ ‫1‪PB‬‬ ‫1‪) OC‬ﻗﻁﺏ ﺨﺭﺝ ﻤﻘﺎﺭﻨﺔ ﻨﻅﻴﺭ ﺍﻟﻤﺅﻗﺕ/ﺍﻟﻌﺩﺍﺩ١ (‬ ‫3‪PB‬‬ ‫‪ ) MISO‬ﻗﻁﺏ ﺩﺨل ﺍﻟﻤﻌﻁﻴﺎﺕ ﺃﺜﻨﺎﺀ ﺒﺭﻤﺠﺔ ﺍﻟﺫﺍﻜﺭﺓ (‬ ‫5‪PB‬‬ ‫‪) MISO‬ﻗﻁﺏ ﺨﺭﺝ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺃﺜﻨﺎﺀ ﻗﺭﺍﺀﺓ ﺍﻟﺫﺍﻜﺭﺓ (‬ ‫6‪PB‬‬ ‫‪) SCK‬ﻗﻁﺏ ﺩﺨل ﺍﻟﺴﺎﻋﺔ ﺍﻟﺘﺴﻠﺴﻠﻴﺔ (‬ ‫7‪PB‬‬ ‫ﺍﻟﺠﺩﻭل )61( : ﺍﻟﻭﻅﺎﺌﻑ ﺍﻟﺨﺎﺼﺔ ﻷﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪B‬‬ ‫ﻋﻨﺩ ﺍﺴﺘﺨﺩﺍﻡ ﺃﻗﻁﺎﺏ ﻫﺫﻩ ﺍﻟﻨﺎﻓﺫﺓ ﻟﺨﺩﻤﺔ ﺍﻟﻭﻅﺎﺌﻑ ﺍﻟﺨﺎﺼﺔ ﺍﻷﺨﺭﻯ ﺍﻟﺘﻲ ﺘﺘﻤﺘﻊ ﺒﻬﺎ ، ﻓﺈﻨﻪ ﻴﺠـﺏ ﻀـﺒﻁ ﻗـﻴﻡ ﻤـﺴﺠل ﺍﺘﺠـﺎﻩ‬ ‫ﺍﻟﻤﻌﻁﻴﺎﺕ ‪ DDRB‬ﻭﻤﺴﺠل ﺍﻟﻨﺎﻓﺫﺓ ‪ PORTB‬ﺒﻤﺎ ﻴﺘﻼﺀﻡ ﻤﻊ ﺸﺭﺡ ﻫﺫﻩ ﺍﻟﻭﻅﺎﺌﻑ .‬ ‫‪The Port B Data Register-PORTB‬‬ ‫ﻤﺴﺠل ﻤﻌﻁﻴﺎﺕ ﺍﻟﻨﺎﻓﺫﺓ ‪PORTB – B‬‬ ‫‪The Port B Direction Register-DDRB‬‬ ‫ﻤﺴﺠل ﺍﺘﺠﺎﻩ ﻤﻌﻁﻴﺎﺕ ﺍﻟﻨﺎﻓﺫﺓ ‪DDRB – B‬‬
  • 17. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫‪The Port B Input PINS Address-PINB‬‬ ‫ﻋﻨﻭﺍﻥ ﺩﺨل ﺃﻗﻁﺎﺏ ﺩﺨل ﺍﻟﻨﺎﻓﺫﺓ‪PINB- B‬‬ ‫ﺇﻥ ﻋﻨﻭﺍﻥ ﺃﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪ PINB-B‬ﻟﻴﺴﺕ ﻤﺴﺠﻼ ﻓﻴﺯﻴﺎﺌﻴﺎ . ﺤﻴﺙ ﻨﺴﺘﻁﻴﻊ ﺍﻟﻭﺼﻭل ﺒﻬـﺫﺍ ﺍﻟﻌﻨـﻭﺍﻥ ﺇﻟـﻰ ﺍﻟﻘـﻴﻡ ﺍﻟﻔﻴﺯﻴﺎﺌﻴـﺔ‬ ‫ﹰ‬ ‫ﹰ‬ ‫ﺍﻟﻤﻭﺠﻭﺩﺓ ﻋﻠﻰ ﻜل ﻗﻁﺏ ﻤﻥ ﺃﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪ . B‬ﻓﻌﻨﺩ ﻗﺭﺍﺀﺓ ﻤﺴﺠل ﺍﻟﻨﺎﻓﺫﺓ ‪ PORTB – B‬ﻓﺈﻨﻨﺎ ﻨﻘﺭﺃ ﻤﻌﻁﻴﺎﺕ ﻤﺎﺴـﻙ ‪latch‬‬ ‫ﺍﻟﻨﺎﻓﺫﺓ ‪ . B‬ﺃﻤﺎ ﻋﻨﺩﻤﺎ ﻨﻘﺭﺃ ﻋﻨﻭﺍﻥ ﺃﻗﻁﺎﺏ ﺩﺨل ﺍﻟﻨﺎﻓﺫﺓ ‪ B‬ﻓﺈﻨﻨﺎ ﻨﻘﺭﺃ ﺍﻟﻘﻴﻡ ﺍﻟﻤﻨﻁﻘﻴﺔ ﺍﻟﺤﺎﻟﻴﺔ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻋﻠﻰ ﺃﻗﻁﺎﺏ ﻫﺫﻩ ﺍﻟﻨﺎﻓﺫﺓ .‬ ‫‪Port B as General Digital I/O‬‬ ‫ﺍﻟﻨﺎﻓﺫﺓ ‪ B‬ﻜﻨﺎﻓﺫﺓ ﺩﺨل/ﺨﺭﺝ ﻋﺎﻤﺔ‬ ‫ﺘﺭﺍﻨﺯﻴﺴﺘﻭﺭ‬ ‫ﺍﻟﺘﻌﻠﻴﻕ‬ ‫‪I/O‬‬ ‫‪PORTBn DDBn‬‬ ‫ﺍﻟﺭﻓﻊ‬ ‫ﻤﻤﺎﻨﻌﺔ ﻋﺎﻟﻴﺔ‬ ‫ﺒﺩﻭﻥ ﺭﻓﻊ‬ ‫ﺩﺨل‬ ‫0‬ ‫0‬ ‫ﻴﺼﺒﺢ ‪ PBn‬ﻤﻨﺒﻌﺎ ﻟﻠﺘﻴﺎﺭ ‪ IIL‬ﺇﺫﺍ ﺍﺘﺼل ﺨﺎﺭﺠﻴﺎ ﻤﻊ‬ ‫ﹰ‬ ‫ﹰ‬ ‫ﻤﻊ ﺭﻓﻊ‬ ‫ﺩﺨل‬ ‫1‬ ‫0‬ ‫ﺍﻟﻤﻨﻁﻕ ﺍﻟﻤﻨﺨﻔﺽ‬ ‫ﺨﺭﺝ ﻤﺭﻓﻭﻉ ﺇﻟﻰ ﺍﻟﺼﻔﺭ‬ ‫ﺒﺩﻭﻥ ﺭﻓﻊ‬ ‫ﺨﺭﺝ‬ ‫0‬ ‫1‬ ‫ﺨﺭﺝ ﻤﺭﻓﻭﻉ ﺇﻟﻰ ﺍﻟﻭﺍﺤﺩ‬ ‫ﺒﺩﻭﻥ ﺭﻓﻊ‬ ‫ﺨﺭﺝ‬ ‫1‬ ‫1‬ ‫ﺍﻟﺠﺩﻭل )71( : ﺘﺄﺜﻴﺭ ﺍﻟﺨﺎﻨﺔ ‪ DDRBn‬ﻋﻠﻰ ﺃﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪B‬‬ ‫ﺤﻴﺙ ﺃﻥ : 7، ‪ 6…0 : n‬ﺭﻗﻡ ﺍﻟﻘﻁﺏ‬ ‫‪Port D‬‬ ‫ﺍﻟﻨﺎﻓﺫﺓ ‪D‬‬ ‫ﻷﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪ D‬ﻭﻅﺎﺌﻑ ﺃﺨﺭﻯ ﻤﺒﻴﻨﺔ ﻓﻲ ﺍﻟﺠﺩﻭل )81( ﺍﻟﺘﺎﻟﻲ :‬ ‫ﺍﻟﻭﻅﻴﻔﺔ ﺍﻟﺨﺎﺼﺔ‬ ‫ﻗﻁﺏ ﺍﻟﻨﺎﻓﺫﺓ‬ ‫‪ ) RXD‬ﻤﺩﺨل ﺍﺴﺘﻘﺒﺎل ﻭﺤﺩﺓ ‪( UART‬‬ ‫0‪PD‬‬ ‫‪ ) TXD‬ﻗﻁﺏ ﺍﺭﺴﺎل ﻭﺤﺩﺓ ‪( UART‬‬ ‫1‪PD‬‬ ‫0‪) INT‬ﻤﺩﺨل ﺍﻟﻤﻘﺎﻁﻌﺔ ﺍﻟﺨﺎﺭﺠﻴﺔ 0 (‬ ‫2‪PD‬‬ ‫1‪) INT‬ﻤﺩﺨل ﺍﻟﻤﻘﺎﻁﻌﺔ ﺍﻟﺨﺎﺭﺠﻴﺔ 1 (‬ ‫3‪PD‬‬ ‫0‪) T‬ﻤﺩﺨل ﺍﻟﻌﺩﺍﺩ 0 (‬ ‫4‪PD‬‬ ‫1‪) T‬ﻤﺩﺨل ﺍﻟﻌﺩﺍﺩ 1 (‬ ‫5‪PD‬‬ ‫ﺍﻟﺠﺩﻭل )81( : ﺍﻟﻭﻅﺎﺌﻑ ﺍﻟﺨﺎﺼﺔ ﻷﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪B‬‬
  • 18. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫ﻋﻨﺩ ﺍﺴﺘﺨﺩﺍﻡ ﺃﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪ D‬ﺒﻭﻅﺎﺌﻔﻬﺎ ﺍﻷﺨﺭﻯ ﻓﺈﻨﻪ ﻴﺠﺏ ﺘﺤﻤﻴل ﺍﻟﻤﺴﺠﻠﻴﻥ ‪ DDRD‬ﻭ ‪ PORTD‬ﺒﻤﺎ ﻴﺘﻨﺎﺴـﺏ ﻤـﻊ ﻫـﺫﻩ‬ ‫ﺍﻟﻭﻅﺎﺌﻑ .‬ ‫‪The Port D Data Register-PORTD‬‬ ‫ﻤﺴﺠل ﻤﻌﻁﻴﺎﺕ ﺍﻟﻨﺎﻓﺫﺓ ‪PORTD – D‬‬ ‫‪The Port D Data Direction Register-DDRD‬‬ ‫ﻤﺴﺠل ﺍﺘﺠﺎﻩ ﻤﻌﻁﻴﺎﺕ ﺍﻟﻨﺎﻓﺫﺓ ‪DDRD- D‬‬ ‫‪The Port D Input Pins Address-PIND‬‬ ‫ﻋﻨﻭﺍﻥ ﺃﻗﻁﺎﺏ ﺩﺨل ﺍﻟﻨﺎﻓﺫﺓ ‪PIND- D‬‬ ‫ﺇﻥ ﻋﻨﻭﺍﻥ ﺍﻟﻨﺎﻓﺫﺓ ‪ PIND – D‬ﻟﻴﺱ ﻤﺴﺠﻼ ، ﺤﻴﺙ ‪‬ﻤﻜﻥ ﻫﺫﺍ ﺍﻟﻌﻨﻭﺍﻥ ﻋﻤﻠﻴﺔ ﺍﻟﻭﺼﻭل ﺇﻟﻰ ﺍﻟﻘﻴﻡ ﺍﻟﻔﻴﺯﻴﺎﺌﻴﺔ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻋﻠﻰ ﻜـل‬ ‫ﻴ‬ ‫ﹰ‬ ‫ﻗﻁﺏ ﻤﻥ ﺃﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ‪ . D‬ﻓﻌﻨﺩ ﻗﺭﺍﺀﺓ ﻤﺴﺠل ﻤﻌﻁﻴﺎﺕ ﺍﻟﻨﺎﻓﺫﺓ ‪ PORTD – D‬ﻓﺈﻨﻨﺎ ﻨﻘﺭﺃ ﻤﻌﻁﻴﺎﺕ ﻤﺎﺴﻙ ‪ latch‬ﺍﻟﻨﺎﻓـﺫﺓ ‪. D‬‬ ‫ﺃﻤﺎ ﻋﻨﺩ ﻗﺭﺍﺀﺓ ﻋﻨﻭﺍﻥ ﺃﻗﻁﺎﺏ ﺩﺨل ﺍﻟﻨﺎﻓﺫﺓ ‪ PIND – D‬ﻓﺈﻨﻨﺎ ﻨﻘﺭﺃ ﺍﻟﻘﻴﻡ ﺍﻟﻤﻨﻁﻘﻴﺔ ﺍﻟﺤﺎﻟﻴﺔ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻋﻠﻰ ﺃﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪. D‬‬ ‫ﺘﺭﺍﻨﺯﻴﺴﺘﻭﺭ‬ ‫ﺍﻟﺘﻌﻠﻴﻕ‬ ‫‪I/O‬‬ ‫‪PORTDn‬‬ ‫‪DDRDn‬‬ ‫ﺍﻟﺭﻓﻊ‬ ‫ﻤﻤﺎﻨﻌﺔ ﻋﺎﻟﻴﺔ‬ ‫ﺒﺩﻭﻥ ﺭﻓﻊ‬ ‫ﺩﺨل‬ ‫0‬ ‫0‬ ‫ﻴﺼﺒﺢ ‪ PDn‬ﻤﻨﺒﻌﺎ ﻟﻠﺘﻴﺎﺭ ‪ IIL‬ﺇﺫﺍ ﺍﺘﺼل ﺨﺎﺭﺠﻴﺎ ﻤﻊ‬ ‫ﹰ‬ ‫ﹰ‬ ‫ﻤﻊ ﺭﻓﻊ‬ ‫ﺩﺨل‬ ‫1‬ ‫0‬ ‫ﺍﻟﻤﻨﻁﻕ ﺍﻟﻤﻨﺨﻔﺽ‬ ‫ﺨﺭﺝ ﻤﺭﻓﻭﻉ ﺇﻟﻰ ﺍﻟﺼﻔﺭ‬ ‫ﺒﺩﻭﻥ ﺭﻓﻊ‬ ‫ﺨﺭﺝ‬ ‫0‬ ‫1‬ ‫ﺨﺭﺝ ﻤﺭﻓﻭﻉ ﺇﻟﻰ ﺍﻟﻭﺍﺤﺩ‬ ‫ﺒﺩﻭﻥ ﺭﻓﻊ‬ ‫ﺨﺭﺝ‬ ‫1‬ ‫1‬ ‫ﺍﻟﺠﺩﻭل )91( : ﺘﺄﺜﻴﺭ ﺍﻟﺨﺎﻨﺎﺕ ‪ DDRDn‬ﻋﻠﻰ ﺃﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ ‪D‬‬ ‫ﺤﻴﺙ ﺃﻥ : 7، ‪ 6…0 : n‬ﺭﻗﻡ ﺍﻟﻘﻁﺏ‬
  • 19. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫‪ ‬‬ ‫‪ ‬ـ ‪.Leds‬‬ ‫ﻧﻮاﻓﺬ اﻟﺪﺧﻞ/اﻟﺨﺮج ) ‪: ( I/O Ports‬‬ ‫أو ً : اﻟﻨﺎﻓﺬة ‪B‬‬ ‫ﻻ‬ ‫اﻟﻨﺎﻓ ﺬة ‪ B‬ھ ﻲ ﻋﺒ ﺎرة ﻋ ﻦ ﻧﺎﻓ ﺬة دﺧ ﻞ/ﺧ ﺮج ﺛﻨﺎﺋﯿ ﺔ اﻻﺗﺠ ﺎه ذات ﺛﻤﺎﻧﯿ ﺔ أﻗﻄ ﺎب. ﺗﺘﻮﺿ ﻊ ﻋﻨ ﺎوﯾﻦ ﻣ ﺴﺠﻼت اﻟﻨﺎﻓ ﺬة ‪B‬‬ ‫اﻟﺜﻼث ﻓﻲ ﺣﯿﺰ ذاﻛﺮة ‪ I/O‬وھﻲ :‬ ‫- ﻣﺴﺠﻞ اﻟﻤﻌﻄﯿﺎت ‪ PORTB‬اﻟﺬي ﯾﺘﻮﺿﻊ ﻋﻨﺪ اﻟﻌﻨﻮان )83$(81$ .‬ ‫- ﻣﺴﺠﻞ اﺗﺠﺎه اﻟﻤﻌﻄﯿﺎت ‪ DDRB‬اﻟﺬي ﯾﺘﻮﺿﻊ ﻋﻨﺪ اﻟﻌﻨﻮان )73$(71$ .‬ ‫- ﻋﻨﻮان أﻗﻄﺎب دﺧﻞ اﻟﻨﺎﻓﺬة ‪ PINB – B‬اﻟﺬي ﯾﺘﻮﺿﻊ ﻋﻨﺪ اﻟﻌﻨﻮان )63$(61$ .‬ ‫وﯾﺠﺐ اﻻﻧﺘﺒﺎه إﻟﻰ أن ﻋﻨﻮان أﻗﻄﺎب اﻟﻨﺎﻓﺬة ‪ B‬ﯾﻘﺮأ ﻓﻘﻂ ، ﺑﯿﻨﻤﺎ ﺗﻨﻔﺬ ﻋﻤﻠﯿﺎت اﻟﻘﺮاءة واﻟﻜﺘﺎﺑﺔ ﻋﻠﻰ ﻣﺴﺠﻞ اﻟﻤﻌﻄﯿ ﺎت و‬ ‫ﻣﺴﺠﻞ اﺗﺠﺎه اﻟﻤﻌﻄﯿﺎت . ﺗﺘﻢ ﻋﻤﻠﯿﺔ اﺧﺘﯿﺎر ﺗﺮاﻧﺰﯾﺴﺘﻮر اﻟﺮﻓﻊ ‪ MOS pull-up‬ﺑ ﺸﻜﻞ ﻣ ﺴﺘﻘﻞ ﻟﻜ ﻞ ﻗﻄ ﺐ ﻣ ﻦ أﻗﻄ ﺎب‬ ‫اﻟﻨﺎﻓﺬة ‪. B‬‬ ‫ﻣﺴﺠﻞ ﻣﻌﻄﯿﺎت اﻟﻨﺎﻓﺬة ‪: PORTB – B‬‬ ‫ﻣﺴﺠﻞ اﺗﺠﺎه ﻣﻌﻄﯿﺎت اﻟﻨﺎﻓﺬة ‪: DDRB – B‬‬ ‫ﻋﻨﻮان دﺧﻞ أﻗﻄﺎب دﺧﻞ اﻟﻨﺎﻓﺬة ‪: PINB-B‬‬ ‫إن ﻋﻨﻮان أﻗﻄﺎب اﻟﻨﺎﻓﺬة ‪ PINB-B‬ﻟﯿﺴﺖ ﻣﺴﺠ ً ﻓﯿﺰﯾﺎﺋﯿً . ﺣﯿﺚ ﻧﺴﺘﻄﯿﻊ اﻟﻮﺻﻮل ﺑﮭ ﺬا اﻟﻌﻨ ﻮان إﻟ ﻰ اﻟﻘ ﯿﻢ اﻟﻔﯿﺰﯾﺎﺋﯿ ﺔ‬ ‫ﺎ‬ ‫ﻼ‬ ‫اﻟﻤﻮﺟﻮدة ﻋﻠﻰ ﻛﻞ ﻗﻄﺐ ﻣﻦ أﻗﻄﺎب اﻟﻨﺎﻓﺬة ‪ . B‬ﻓﻌﻨﺪ ﻗﺮاءة ﻣﺴﺠﻞ اﻟﻨﺎﻓ ﺬة ‪ PORTB – B‬ﻓﺈﻧﻨ ﺎ ﻧﻘ ﺮأ ﻣﻌﻄﯿ ﺎت ﻣﺎﺳ ﻚ‬ ‫‪ latch‬اﻟﻨﺎﻓﺬة ‪ . B‬أﻣﺎ ﻋﻨﺪﻣﺎ ﻧﻘﺮأ ﻋﻨﻮان أﻗﻄﺎب دﺧﻞ اﻟﻨﺎﻓﺬة ‪ B‬ﻓﺈﻧﻨﺎ ﻧﻘﺮأاﻟﻘﯿﻢ اﻟﻤﻨﻄﻘﯿﺔ اﻟﺤﺎﻟﯿ ﺔ اﻟﻤﻮﺟ ﻮدة ﻋﻠ ﻰ أﻗﻄ ﺎب‬ ‫ھﺬه اﻟﻨﺎﻓﺬة .‬ ‫ﯾﺒﯿﻦ اﻟﺠﺪول اﻟﺘﺎﻟﻲ ﺗﺄﺛﯿﺮ اﻟﺨﺎﻧﺔ ‪ DDRBn‬ﻋﻠﻰ أﻗﻄﺎب اﻟﻨﺎﻓﺬة ‪ ) B‬ﺣﯿﺚ أن : ٦ ... 0 = ‪ n‬رﻗﻢ اﻟﻘﻄﺐ (‬ ‫اﻟﻔﺎرس ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب واﻹﺗﺼﺎﻻت‬ ‫ﺳﻮرﯾﺎ – ﺣﻤﺎه- ھـ-916922 33 369+‬
  • 20. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫اﻟﺘﻌﻠﯿﻖ‬ ‫ﺗﺮاﻧﺰﯾﺴﺘﻮر اﻟﺮﻓﻊ‬ ‫‪I/O‬‬ ‫‪PORTB‬‬ ‫‪DDRB‬‬ ‫‪n‬‬ ‫‪n‬‬ ‫ﻣﻤﺎﻧﻌﺔ ﻋﺎﻟﯿﺔ‬ ‫ﺑﺪون رﻓﻊ‬ ‫دﺧﻞ‬ ‫0‬ ‫0‬ ‫ﯾﺼﺒﺢ ‪ PBn‬ﻣﻨﺒﻌً ﻟﻠﺘﯿ ﺎر ‪ IIL‬إذا اﺗ ﺼﻞ ﺧﺎرﺟﯿ ً ﻣ ﻊ اﻟﻤﻨﻄ ﻖ‬ ‫ﺎ‬ ‫ﺎ‬ ‫ﻣﻊ رﻓﻊ‬ ‫دﺧﻞ‬ ‫1‬ ‫0‬ ‫اﻟﻤﻨﺨﻔﺾ‬ ‫ﺧﺮج ﻣﺮﻓﻮع إﻟﻰ اﻟﺼﻔﺮ‬ ‫ﺑﺪون رﻓﻊ‬ ‫ﺧﺮج‬ ‫0‬ ‫1‬ ‫ﺧﺮج ﻣﺮﻓﻮع إﻟﻰ اﻟﻮاﺣﺪ‬ ‫ﺑﺪون رﻓﻊ‬ ‫ﺧﺮج‬ ‫1‬ ‫1‬ ‫وﯾﻮﺟﺪ ﻣﺜﻞ ھﺬه اﻟﻤﺴﺠﻼت ﻟﻠﻤﻨﻔﺬ ‪ D‬و ھﻲ: ‪ DDRD,PORTD and PIND‬وﺟﻤﯿﻊ ھﺬه اﻟﻤﺴﺠﻼت ﻣﻮﺟ ﻮدة ﻓ ﻲ‬ ‫اﻟﻤﺴﺠﻼت اﻟﺨﺎﺻﺔ اﻟـ46 " ‪SFR "Special Function Registers‬‬ ‫ﻋﻠﻰ ﺳﺒﯿﻞ اﻟﻤﺜﺎل إذا أردﻧﺎ أن ﯾﻜﻮن ﻧﺼﻒ اﻟﻤﻨﻔ ﺬ ‪ B‬دﺧ ﻞ ﻣ ﻊ ﻣﻘﺎوﻣ ﺔ رﻓ ﻊ وﻧ ﺼﻔﮫ ﺧ ﺮج وذﻟ ﻚ ﺑﺎﻟﺘﻌﺎﻗ ﺐ أي ‪PIN‬‬ ‫دﺧﻞ ﺛﻢ اﻟﺬي ﯾﻠﯿﮫ ﺧﺮج ﻓﯿﺠﺐ أن ﻧﻜﺘﺐ:‬ ‫)"11110000"( ‪PORTB=0x0F‬‬ ‫)"01010101"( ‪DDRB=0xAA‬‬ ‫وﻧﻼﺣﻆ ھﻨﺎ أﻧﮫ ﺗﻢ ﺗﻌﺮﯾﻒ 1.‪ PINB.7 PINB.5 PINB.3 PINB‬ﻋﻠﻰ أﻧﮭﺎ ﺟﻤﯿﻌﮭﺎ ﺧﺮج.‬ ‫و 0.‪ PINB2. PINB‬دﺧﻞ وﻟﻜﻦ ﻣﻊ وﺟﻮد ﻣﻘﺎوﻣﺔ رﻓﻊ "أي أن ﻗﯿﻤﺔ اﻟﺪﺧﻞ اﻹﻓﺘﺮاﺿﯿﺔ 1 ".‬ ‫و4.‪ PINB.6 PINB‬دﺧﻞ وﻟﻜﻦ ﺑﺪون ﻣﻘﺎوﻣﺔ رﻓﻊ . "أي أن ﻗﯿﻤﺔ اﻟﺪﺧﻞ اﻹﻓﺘﺮاﺿﯿﺔ 0 ".‬ ‫- ﯾﻌ ﺮف اﻟ ـ ‪ Led‬ﺑﺄﻧ ﮫ ﻋﺒ ﺎرة ﻋ ﻦ ﺛﻨ ﺎﺋﻲ ﺿ ﻮﺋﻲ ﯾﻤ ﺮر اﻟﺘﯿ ﺎر اﻟﻜﮭﺮﺑ ﺎﺋﻲ ﻋﻨ ﺪ ﺗﻄﺒﯿ ﻖ 1 ﻣﻨﻄﻘ ﻲ ﻋﻠ ﻰ ﻣ ﺼﻌﺪه و 0‬ ‫ﻣﻨﻄﻘﻲ ﻋﻠﻰ ﻣﮭﺒﻄﮫ وأﺛﻨﺎء ﻣﺮور اﻟﺘﯿﺎر ﯾﻘﻮم ﺑﺈﺻﺪار ﺿﻮء ﻣﻌﯿﻦ وﯾﺮﻣﺰ ﻟﮫ .‬ ‫1‬ ‫0‬ ‫رﻣﺰ اﻟﺜﻨﺎﺋﻲ اﻟﻀﻮﺋﻲ ‪Led‬‬ ‫ﯾﻮﺻ ﻞ ﻋ ﺎدة ﻣ ﻊ اﻟﺜﻨ ﺎﺋﻲ اﻟ ﻀﻮﺋﻲ ﻋﻠ ﻰ اﻟﺘﺴﻠ ﺴﻞ ﻣﻘﺎوﻣ ﺔ ﻟﺤﻤﺎﯾ ﺔ اﻟﺜﻨ ﺎﺋﻲ ﻣ ﻦ اﻹﻧﮭﯿ ﺎرﻓﻲ ﺣ ﺎل ﺗﻄﺒﯿ ﻖ ﺟﮭ ﻮد ﻋﺎﻟﯿ ﺔ ،‬ ‫وﺗﻘﺪر ﻗﯿﻤﺘﮭﺎ ﻓﻲ ﺣﺎل ﺗﻄﺒﯿﻖ ﺟﮭﺪ 5 ﻓﻮﻟﻂ ﺑـ 022 أوم .‬ ‫ﺳﻮف ﻧﻘﻮم ﺑﻜﻞ اﻟﻤﺸﺎرﯾﻊ ﺑﺎﻟﺘﻜﻠﻢ ﻋﻦ اﻟﻌﻨﺎﺻ ﺮ اﻟﺘ ﻲ ﺳ ﻮف ﻧ ﺴﺘﺨﺪﻣﮭﺎ ﻓ ﻲ اﻟﻤ ﺸﺮوع ﺛ ﻢ ﺷ ﺮح اﻟﺘﻌﻠﯿﻤ ﺎت اﻟﺠﺪﯾ ﺪة ﻓ ﻲ‬ ‫اﻟﻤﺸﺮوع ﺛﻢ ﺷﺮح اﻟﻤﺸﺮوع ﺑﺎﻟﻜﺎﻣﻞ .‬ ‫اﻟﻔﺎرس ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب واﻹﺗﺼﺎﻻت‬ ‫ﺳﻮرﯾﺎ – ﺣﻤﺎه- ھـ-916922 33 369+‬
  • 21. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫دارة اﻟﻤﺸﺮوع :‬ ‫ﻣﺸﺮوع ﺣﺮﻛﺔ أﺿﻮاء اﻟﻠﯿﺪات‬ ‫ﺑﺮﻧﺎﻣﺞ اﻟﻤﺸﺮوع :‬ ‫>‪#include <90s2313.h‬‬ ‫ﺗﻮﺟﯿﮫ ﻣﻦ أﺟﻞ إدراج اﻟﻤﻜﺘﺒﺔ اﻟﻤﺘﻌﻠﻘﺔ ﺑﺎﻟﻤﻌﺎﻟﺞ ٣١٣٢‬ ‫)‪void main(void‬‬ ‫اﻟﺘﺎﺑﻊ اﻟﺮﺋﯿﺴﻲ //‬ ‫{‬ ‫;00‪PORTB=0x‬‬ ‫ﺗﮭﯿﺌﺔ اﻟﻤﻨﻔﺬ ﻛﻠﮫ ﺧﺮج //‬ ‫;‪DDRB=0xff‬‬ ‫)1( ‪while‬‬ ‫ﺣﻠﻘﺔ ﻻﻧﮭﺎﺋﯿﺔ //‬ ‫{‬ ‫;‪PORTB=0xff‬‬ ‫إﺿﺎءة ﺟﻤﯿﻊ اﻟﻠﯿﺪات //‬ ‫;)(‪delay‬‬ ‫اﺳﺘﺪﻋﺎء اﻟﺘﺎﺑﻊ اﻟﻔﺮﻋﻲ اﻟﻤﺴﺆول ﻋﻦ ﻋﻤﻠﯿﺔ اﻟﺘﺄﺧﯿﺮ اﻟﺰﻣﻨﻲ //‬ ‫اﻟﻔﺎرس ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب واﻹﺗﺼﺎﻻت‬ ‫ﺳﻮرﯾﺎ – ﺣﻤﺎه- ھـ-916922 33 369+‬
  • 22. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫;00‪PORTB=0x‬‬ ‫;)(‪delay‬‬ ‫;‪PORTB=0x0f‬‬ ‫;)(‪delay‬‬ ‫;0‪PORTB=0xf‬‬ ‫;)(‪delay‬‬ ‫;18‪PORTB=0x‬‬ ‫;)(‪delay‬‬ ‫;}‬ ‫ﻧﮭﺎﯾﺔ اﻟﺤﻠﻘﺔ اﻻﻧﮭﺎﺋﯿﺔ //‬ ‫}‬ ‫ﻧﮭﺎﯾﺔ اﻟﺘﺎﺑﻊ اﻟﺮﺋﯿﺴﻲ //‬ ‫)‪void delay(void‬‬ ‫ﺗﺎﺑﻊ ﻓﺮﻋﻲ ﻣﻦ أﺟﻞ ﻋﻤﻠﯿﺔ اﻟﺘﺄﺧﯿﺮ //‬ ‫{‬ ‫;999=‪int t‬‬ ‫ﺗﻌﺮﯾﻒ ﻣﺘﺤﻮل ﺣﻘﯿﻘﻲ وإﺳﻨﺎد اﻟﻘﯿﻤﺔ ٩٩٩ﻟﮫ //‬ ‫)0=!‪while (t‬‬ ‫ﺣﻠﻘﺔ ﺗﺴﺘﻤﺮ ﻣﺎدام اﻟﻌﺪد اﻟﻤﺘﺤﻮل ﻻﯾﺴﺎوي اﻟﺼﻔﺮ //‬ ‫;--‪t‬‬ ‫إﻧﻘﺎص ﻗﯿﺔ اﻟﻤﺘﺤﻮل ﺑﻤﻘﺪار١ //‬ ‫}‬ ‫ﻧﮭﺎﯾﺔ اﻟﺘﺎﺑﻊ اﻟﻔﺮﻋﻲ واﻟﻌﻮدة إﻟﻰ ﻣﻜﺎن اﻹﺳﺘﺪﻋﺎء //‬ ‫ﺷﺮح ﺗﻌﻠﯿﻤﺎت اﻟﻤﺸﺮوع :‬ ‫----------------------------------------------------------------------------------------‬ ‫>‪#include <90s2313.h‬‬ ‫-‬ ‫ھ ﺬه اﻟﺘﻌﻠﯿﻤ ﺔ ﻋﺒ ﺎرة ﻋ ﻦ ﺗﻮﺟﯿ ﮫ ﻟﻠﻤﺘ ﺮﺟﻢ ﺑ ﺄن ھ ﺬا اﻟﺒﺮﻧ ﺎﻣﺞ ﻣﺨ ﺼﺺ ﻟﻠﻤ ﺘﺤﻜﻢ 3132‪ At90s‬ﻟ ﺬﻟﻚ ﯾﻘ ﻮم اﻟﻤ ﺘﺤﻜﻢ‬ ‫ِ‬ ‫ﺑﺈدراج اﻟﻤﻜﺘﺒﺔ اﻟﻤﺨﺼﺼﺔ ﻟﮭﺬا اﻟﻤﻌﺎﻟﺞ "ﻛﻞ ﺗﻌﻠﯿﻤﺔ ﺗﺒﺪأ ﺑـ # ﻓﮭﻲ ﻋﺒﺎرة ﻋﻦ ﺗﻮﺟﯿﮫ".‬ ‫----------------------------------------------------------------------------------------‬ ‫// )‪void main(void‬‬ ‫- اﻟﺘﺎﺑﻊ اﻟﺮﺋﯿﺴﻲ‬ ‫{‬ ‫........‬ ‫.........‬ ‫}‬ ‫ﯾﻌﺪ ھﺬا اﻟﺘﺎﺑﻊ ھﻮ اﻷﺳﺎﺳﻲ ﻓﻲ ﻛﺘﺎﺑﺔ اﻟﺒﺮﻧﺎﻣﺞ واﻟﺬي ﻣﻨﮫ ﯾﺒﺪأ اﻟﻤﺘﺮﺟﻢ ﺑﺘﻨﻔﯿﺬ ﻋﻤﻠﯿﺔ اﻟﺘﺮﺟﻤﺔ وﻟﮫ اﻟﺼﯿﻐﺔ اﻟﺴﺎﺑﻘﺔ.‬ ‫و) ‪ (void‬ﺗﻌﻨﻲ ﺑﺄن ھﺬا اﻟﺘﺎﺑﻊ ﻻ ﯾﺴﺘﻘﺒﻞ أي ﻗﯿﻤﺔ و ‪ void‬اﻟﺘﻲ ﻓ ﻲ اﻟﺒﺪاﯾ ﺔ ﺗﻌﻨ ﻲ أن اﻟﺘ ﺎﺑﻊ ﻻ ﯾﺮﺟ ﻊ أي ﻗﯿﻤ ﺔ وذﻟ ﻚ‬ ‫ﻷن ھﺬا اﻟﺘﺎﺑﻊ ﻻﯾﺴﺘﺪﻋﻰ ﻣﻦ ﻗﺒﻞ أي ﺗﺎﺑﻊ آﺧﺮ .‬ ‫اﻟﻔﺎرس ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب واﻹﺗﺼﺎﻻت‬ ‫ﺳﻮرﯾﺎ – ﺣﻤﺎه- ھـ-916922 33 369+‬
  • 23. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫----------------------------------------------------------------------------------------‬ ‫;00‪PORTB=0x‬‬ ‫-‬ ‫;‪DDRB=0xff‬‬ ‫-‬ ‫ھﺎﺗﺎن اﻟﺘﻌﻠﯿﻤﺘﺎن ﯾﺴﺘﺨﺪﻣﺎن ﻣ ﻦ أﺟ ﻞ ﺗﮭﯿﺌﯿ ﺔ اﻟﻤ ﺪاﺧﻞ واﻟﻤﺨ ﺎرج ﻓﺎﻟﺘﻌﻠﯿﻤ ﺔ ;00‪ PORTB=0x‬ﺗﻌﻨ ﻲ أن أﺧ ﺮج ﻋﻠ ﻰ‬ ‫اﻟﻤﻨﻔﺬ ‪ B‬اﻟﻘﯿﻤﺔ اﻟﺴﺖ ﻋﺸﺮﯾﺔ 00 ﺣﯿ ﺚ ﺗ ﺪل اﻟﺪاﻟ ﺔ ‪ 0X‬ﻋﻠ ﻰ أن اﻟ ﺮﻗﻢ ﻣﻜﺘ ﻮب ﺑﺎﻟ ﺼﯿﻐﺔ اﻟ ﺴﺖ ﻋ ﺸﺮﯾﺔ . واﻟﺘﻌﻠﯿﻤ ﺔ‬ ‫;‪ DDRB=0xff‬ﺗﻌﻨﻲ ﺑﺄن اﻟﻨﺎﻓﺬة ‪ B‬ﻛﻠﮭﺎ ﻣﺨﺎرج .‬ ‫ﻓﻔﻲ ﺑﺪاﯾﺔ أي ﻣﺸﺮوع ﯾﺠﺐ ﺗﮭﯿﺌﯿﺔ اﻟﻤﺴﺠﻼت اﻟﺘﻲ ﺳﻮف ﻧﺴﺘﺨﺪﻣﮭﺎ ﻓﻲ ﻣﺸﺮوﻋﻨﺎ ﻗﺒﻞ ﺗﻨﻔﯿﺬ أي ﺧﻄﻮة .‬ ‫-----------------------------------------------------------------------------------------‬ ‫)1( ‪while‬‬ ‫ﺣﻠﻘﺔ ﻻﻧﮭﺎﺋﯿﺔ‬ ‫-‬ ‫{‬ ‫.……‬ ‫.……‬ ‫;}‬ ‫ﺗﺴﺘﺨﺪم ھﺬه اﻟﺤﻠﻘﺔ ﻣﻦ أﺟﻞ اﺳﺘﻤﺮار ﻋﻤﻞ اﻟﺒﺮﻧﺎﻣﺞ داﺋﻤً واﻟﺸﺮط )1( ﯾﻌﻨﻲ أن ھﺬا اﻟﺸﺮط داﺋﻤً ﻣﺤﻘﻖ .‬ ‫ﺎ‬ ‫ﺎ‬ ‫ﻣﻼﺣﻈﺔ ﻻﺗﻨﺴﻰ اﻟﻔﺎﺻﻠﺔ اﻟﻤﻨﻘﻮﻃﺔ ﻓﻲ ﻧﮭﺎﯾﺔ اﻟﺤﻠﻘﺔ .‬ ‫ﺿﻤﻦ ھﺬه اﻟﺤﻠﻘﺔ ﻧﻜﺘﺐ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺬي ﺳﻮف ﯾﻘﻮم اﻟﻤﻌﺎﻟﺞ ﺑﺘﻨﻔﯿﺬه داﺋﻤً .‬ ‫ﺎ‬ ‫----------------------------------------------------------------------------------------‬ ‫;‪PORTB=0xff‬‬ ‫أﺧﺮج اﻟﻘﯿﻤﺔ اﻟﺴﺖ ﻋﺸﺮﯾﺔ ‪ 0xff‬ﻋﻠﻰ اﻟﻤﻨﻔﺬ ‪ B‬أي َﺿﺊ ﺟﻤﯿﻊ اﻟﻠﯿﺪات اﻟﻤﻮﺻﻮﻟﺔ ﻣﻊ ھﺬا اﻟﻤﻨﻔﺬ‬ ‫أ‬ ‫----------------------------------------------------------------------------------------‬ ‫;)(‪delay‬‬ ‫وھﻲ ﺗﻌﻠﯿﻤﺔ اﺳﺘﺪﻋﺎء ﻟﺘﺎﺑﻊ ﻓﺮﻋﻲ ﯾﺪﻋﻰ ‪ delay‬ﯾﻘﻮم ھﺬا اﻟﺘﺎﺑﻊ ﺑﻌﻤﻠﯿﺔ اﻟﺘﺄﺧﯿﺮ اﻟﺰﻣﻨﻲ ﯾﺒﻦ ﻛ ﻞ ﻋﻤﻠﯿﺘ ﯿﻦ إﻇﮭ ﺎر وذﻟ ﻚ‬ ‫ﺣﺘﻰ ﯾﺘﺜﻨﻰ ﻟﻨﺎ ﻣﻼﺣﻈﺔ اﻟﺤﺮﻛﺔ ﻗﺒﻞ أن ﺗﺄﺗﻲ اﻟﺤﺮﻛﺔ اﻟﺘﺎﻟﯿ ﺔ وﻛﻤ ﺎ ﻧﻌﻠ ﻢ ﺑ ﺄن ﺳ ﺮﻋﺔ اﻟﻤﻌ ﺎﻟﺞ ﻛﺒﯿ ﺮة ﺟ ﺪً ﻟ ﺬا ﻓﺒ ﺪون ھ ﺬه‬ ‫ا‬ ‫اﻟﻌﻤﻠﯿﺔ ﻟﻦ ﻧﻼﺣﻆ ھﺬه اﻟﺤﺮﻛﺎت .‬ ‫----------------------------------------------------------------------------------------‬ ‫ﺑﻌﺪ ذﻟﻚ ﻧﻘﻮم ﺑﻜﺘﺎﺑﺔ ﺣﺮﻛﺎت ﺟﺪﯾﺪة وﻧﻀﻊ ﺑﻌﺪ ﻛﻞ ﺣﺮﻛﺔ اﻟﺘﺄﺧﯿﺮ اﻟﺰﻣﻨﻲ ‪. delay‬‬ ‫----------------------------------------------------------------------------------------‬ ‫// )‪void delay(void‬‬ ‫ﺗﺎﺑﻊ ﻓﺮﻋﻲ ﻣﻦ أﺟﻞ ﻋﻤﻠﯿﺔ اﻟﺘﺄﺧﯿﺮ‬ ‫{‬ ‫;999=‪int t‬‬ ‫)0=!‪while (t‬‬ ‫;--‪t‬‬ ‫}‬ ‫ھﺬا اﻟﺘﺎﺑﻊ ﻻﯾﺴﺘﻘﺒﻞ أي ﻗﯿﻤﺔ وﻻﯾﻌﯿ ﺪ أي ﻗﯿﻤ ﺔ وإﻧﻤ ﺎ ﯾﻘ ﻮم ﺑﻌﻤﻠﯿ ﺎت ﺗﻤ ﺘﺺ ﻧﺒ ﻀﺎت اﻟﻤﻌ ﺎﻟﺞ ﻣ ﻦ أﺟ ﻞ اﻟﺘ ﺄﺧﯿﺮ اﻟﺰﻣﻨ ﻲ‬ ‫وﻟﺘﺤﻘﯿﻖ ذﻟﻚ ﺗﻢ ﺗﻌﺮﯾﻒ ﻣﺘﺤﻮل ﺣﻘﯿﻘﻲ ‪ t‬ﯾﺤﺘﻮي ﻋﻠ ﻰ اﻟﻘﯿﻤ ﺔ ٩٩٩ ﺛ ﻢ ﻧ ﺪﺧﻞ ﺑﺤﻠﻘ ﺔ ‪ while‬وﺗﺒﻘ ﻰ ھ ﺬه اﻟﺤﻠﻘ ﺔ ﻣ ﺎدام‬ ‫اﻟﺸﺮط ﺑﯿﻦ اﻟﻘﻮﺳﯿﻦ ﻣﺤﻘﻖ وھﻮ أن ‪ t‬ﻻﯾﺴﺎوي اﻟﺼﻔﺮ)0=!‪ (t‬وﺿﻤﻦ ھﺬه اﻟﺤﻠﻘ ﺔ ﻧﻘ ﻮم ﺑﺈﻧﻘ ﺎص اﻟﻌ ﺪد ‪ (t--) t‬وﺗﺒﻘ ﻰ‬ ‫اﻟﺤﻠﻘﺔ ﺣﺘ ﻰ ﺗ ﺼﺒﺢ ﻗﯿﻤ ﺔ اﻟﻌ ﺪد ‪t‬ﻣ ﺴﺎوﯾﺔ ﻟﻠ ﺼﻔﺮ وﻋﻨ ﺪھﺎ ﯾﺮﺟ ﻊ اﻟﻤﻌ ﺎﻟﺞ إﻟ ﻰ ﻣﻜ ﺎن اﺳ ﺘﺪﻋﺎء ھ ﺬا اﻟﺘ ﺎﺑﻊ اﻟﻔﺮﻋ ﻲ ﻓ ﻲ‬ ‫اﻟﺒﺮﻧﺎﻣﺞ اﻷﺳﺎﺳﻲ وﯾﻘﻮم ﺑﻤﺘﺎﺑﻌﺔ ﺗﻨﻔﯿﺬ اﻟﺘﻌﻠﯿﻤﺎت اﻟﺘﺎﻟﯿﺔ.‬ ‫ﻣﻼﺣﻈﺔ : إذا ﻛﺎن ﺿﻤﻦ ﺣﻠﻘﺔ ‪ while‬ﻻﯾﻮﺟﺪ إﻻ ﺗﻌﻠﯿﻤﺔ واﺣﺪة ﻓﻠﯿﺲ ھﻨﺎك ﺣﺎﺟﺔ ﻟﻸﻗﻮاس ﻟﻠﺤﻠﻘﺔ .‬ ‫اﻟﻔﺎرس ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب واﻹﺗﺼﺎﻻت‬ ‫ﺳﻮرﯾﺎ – ﺣﻤﺎه- ھـ-916922 33 369+‬
  • 24. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫‪ ‬‬ ‫‪Seven Segment ‬‬ ‫ﺸﺎﺸﺎﺕ ﺍﻹﻅﻬﺎﺭ ﺫﺍﺕ ﺍﻟﺴﺒﻊ ﻗﻁﻊ ).‪: (7-Seg‬‬ ‫ﺸﺎﺸﺔ ﺍﻹﻅﻬﺎﺭ ﺫﺍﺕ ﺍﻟﺴﺒﻊ ﻗﻁﻊ ).‪ (7-Seg‬ﻫﻲ ﻋﺒﺎﺭﺓ ﻋﻥ ﺃﺩﺍﺓ ﺍﻟﻜﺘﺭﻭﻨﻴﺔ ﺘﺤﺘﻭﻱ ﻋﻠﻰ ﺴﺒﻊ ﻗﻁﻊ ﻤﺘﻭﻀﻌﺔ ﺒـﺸﻜل ﻴـﺴﻤﺢ‬ ‫ﺒﺈﻅﻬﺎﺭ ﺠﻤﻴﻊ ﺍﻷﺭﻗﺎﻡ ﻋﺒﺭﻫﺎ ، ﻭﺨﻠﻑ ﻜل ﻗﻁﻌﺔ ﻴﻭﺠﺩ ﻟﻴﺩ ﻀﻭﺌﻲ )‪ (LED‬ﻭﹸﻀﺎﺀ ﻫﺫﻩ ﺍﻟﻠﻴﺩﺍﺕ ﻭﹸﻁﻔﺊ ﺒﺸﻜل ﻴﺴﻤﺢ ﺒﺈﻅﻬﺎﺭ‬ ‫ﺘ‬ ‫ﺘ‬ ‫ﺍﻟﺭﻗﻡ ﺍﻟﻤﻁﻠﻭﺏ ، ﻭﻴﻤﻜﻥ ﻋﻥ ﻁﺭﻴﻕ ﻫﺫﻩ ﺍﻟﺸﺎﺸﺔ ﺇﻅﻬﺎﺭ ﺠﻤﻴﻊ ﺍﻷﺭﻗﺎﻡ ﻜﻤﺎ ﻴﻤﻜﻥ ﺇﻅﻬﺎﺭ ﺒﻌﺽ ﺍﻷﺤﺭﻑ ﻜـﺄﺤﺭﻑ ﺍﻟﻨﻅـﺎﻡ‬ ‫ﺍﻟﺴﺕ ﻋﺸﺭﻱ ﻤﺜ ﹰ .‬ ‫ﻼ‬ ‫ﻭﻴﺨﺘﻠﻑ ﺍﻟﻀﻭﺀ ﺍﻟﺼﺎﺩﺭ ﻋﻨﻬﺎ ﺒﺎﺨﺘﻼﻑ ﻨﻭﻋﻬﺎ ، ﻓﻬﻨﺎﻙ ﺍﻟﺸﺎﺸﺎﺕ ﺍﻟﺤﻤﺭﺍﺀ ﻭﺍﻟﺨﻀﺭﺍﺀ ﻭﺍﻟﺼﻔﺭﺍﺀ ﻭﻓﻲ ﺒﻌﺽ ﺍﻷﺤﻴﺎﻥ ﺘـﺄﺘﻲ‬ ‫ﻫﺫﻩ ﺍﻟﺸﺎﺸﺎﺕ ﺒﺎﻟﻠﻭﻥ ﺍﻟﺒﺭﺘﻘﺎﻟﻲ ، ﻭﻟﻜﻨﻬﺎ ﻋﻠﻰ ﺍﺨﺘﻼﻑ ﻨﻭﻋﻬﺎ ﻭﻟﻭﻨﻬﺎ ﺘﻤﺘﻠﻙ ﺠﻤﻴﻌﻬﺎ ﺴﺒﻊ ﻗﻁﻊ ﻤﺭﺘﺒﺔ ﻭﻓﻕ ﺍﻟـﺸﻜل ﺍﻟـﺴﺎﺒﻕ‬ ‫ﻭ ‪‬ﺭﻤﺯ ﻟﻜل ﻗﻁﻌﺔ ﻓﻴﻬﺎ ﺒﺤﺭﻑ ﻤﻥ ﺍﻷﺤﺭﻑ ﺍﻟﻤﺒﻴﻨﺔ ﺒﺎﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ :‬ ‫ﻴ‬ ‫ﻓﻲ ﺍﻟﺸﻜل ﺍﻟﻤﺠﺎﻭﺭ ﺇﺫﺍ ﺃﺭﺩﻨﺎ ﺇﻅﻬﺎﺭ ﺍﻟﺭﻗﻡ )0( ﻤﺜ ﹰ ، ﻴﺠﺏ‬ ‫ﻼ‬ ‫ﻋﻠﻴﻨﺎ ﺇﻀﺎﺀﺓ ﺍﻟـــﻘﻁﻊ )‪ (a,b,c,d,e,f‬ﻭﺇﻁـــﻔﺎﺀ ﺍﻟﻘـــﻁﻌﺔ )‪(g‬‬ ‫ﺃﻤﺎ ﺇﻅﻬﺎﺭ ﺍﻟﺭﻗﻡ )1( ﻓﻴﺘﻁﻠﺏ ﺇﻀﺎﺀﺓ ﺍﻟﻘﻁﻌﺘﻴﻥ )‪ (b,c‬ﻭﺇﻁﻔﺎﺀ‬ ‫ﺍﻟﻘﻁﻊ )‪ ، (a,d,e,f,g‬ﻭﻹﻅﻬﺎﺭ ﺍﻟﺭﻗﻡ )2( ﻴﺠﺏ ﺇﻀﺎﺀﺓ ﺍﻟﻘﻁﻊ‬ ‫)‪ (a,b,g,e,d‬ﻭﺇﻁﻔﺎﺀ ﺍﻟﻘﻁﻌﺘﻴﻥ )‪ (c,f‬ﻭﻫﻜﺫﺍ ﺒﺎﻟﻨﺴﺒﺔ ﻟﺒﻘﻴﺔ‬ ‫ﺍﻷﺭﻗﺎﻡ .‬ ‫ﺘﻤﺘﻠﻙ ﺍﻟﺨﺎﻨﺔ ﺍﻟﻭﺍﺤﺩ ﻤﻥ ﺸﺎﺸﺔ ﺍﻹﻅﻬﺎﺭ ).‪ (7-Seg‬ﻋﺎﺩ ﹰ ﻋﺸﺭﺓ ﺃﻗﻁﺎﺏ ﻤﺘﻭﻀﻌﺔ ﻋﻠﻰ ﻁﺭﻓﻴﻥ ﻤﺘﻘﺎﺒﻠﻴﻥ ﻤﻥ ﺍﻟﺨﺎﻨﺔ ﺇﻤﺎ ﻓـﻲ‬ ‫ﺓ‬ ‫ﺍﻷﻋﻠﻰ ﻭﺍﻷﺴﻔل ﺃﻭ ﻋﻠﻰ ﺍﻟﺠﺎﻨﺒﻴﻥ ، ﺘﺄﺨﺫ ﺍﻟﻘﻁﻊ ﺍﻟﺴﺒﻊ ﺴﺒﻌﺔ ﺃﻗﻁﺎﺏ ﻤﻥ ﺍﻷﻗﻁﺎﺏ ﺍﻟﻌﺸﺭﺓ ﺒﺤﻴﺙ ﺃﻥ ﻜل ﻗﻁﺏ ﻴﺘـﺼل ﻤـﻊ‬ ‫ﺍﻟﻘﻁﻌﺔ ﺍﻟﻤﻘﺎﺒﻠﺔ ﻟﻪ ، ﻭﻫﻨﺎﻙ ﻗﻁﺒﻴﻥ ﻟﻠﺘﻐﺫﻴﺔ ﻜل ﻗﻁﺏ ﻓﻲ ﻁﺭﻑ ﺒﺤﻴﺙ ﺘﻌﻤل ﺍﻟﺨﺎﻨﺔ ﻋﻨﺩ ﻭﺼل ﺍﻟﺘﻐﺫﻴﺔ ﺍﻟـﺴﺎﻟﺒﺔ ﺃﻭ ﺍﻟﻤﻭﺠﺒـﺔ‬ ‫)ﺒﺤﺴﺏ ﻨﻭﻉ ﺍﻟﺨﺎﻨﺔ( ﺇﻟﻰ ﺃﺤﺩ ﻗﻁﺒﻲ ﺍﻟﺘﻐﺫﻴﺔ ، ﻭﺍﻟﻘﻁﺏ ﺍﻟﻌﺎﺸﺭ ﻤﺘﺼل ﻤﻊ ﺍﻟﻨﻘﻁﺔ ﺍﻟﻤﺘﻭﻀﻌﺔ ﺒﺠﺎﻨﺏ ﺍﻟﺨﺎﻨـﺔ ﻭﺒﺎﻟﺘـﺎﻟﻲ ﻫـﻭ‬ ‫ﻤﺴﺅﻭل ﻋﻥ ﺇﻀﺎﺀﺘﻬﺎ .‬ ‫ﻭﻟﺸﺎﺸﺔ ﺍﻹﻅﻬﺎﺭ ﺫﺍﺕ ﺍﻟﺴﺒﻊ ﻗﻁﻊ ).‪ (7-Seg‬ﻨﻭﻋﻴﻥ ﺭﺌﻴﺴﻴﻴﻥ :‬ ‫1 . ﺍﻟﺸﺎﺸﺔ ﺫﺍﺕ ﺍﻟﻤﺼﺎﻋﺩ ﺍﻟﻤﺸﺘﺭﻜﺔ .‬ ‫2 . ﺍﻟﺸﺎﺸﺔ ﺫﺍﺕ ﺍﻟﻤﻬﺎﺒﻁ ﺍﻟﻤﺸﺘﺭﻜﺔ .‬ ‫1 . ﺍﻟﺸﺎﺸﺔ ﺫﺍﺕ ﺍﻟﻤﺼﺎﻋﺩ ﺍﻟﻤﺸﺘﺭﻜﺔ :‬ ‫ﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﺘﻜﻭﻥ ﻤﺼﺎﻋﺩ ﺍﻟﻠﻴﺩﺍﺕ ﺍﻟﺴﺒﻌﺔ ﻤﺘﺼﻠﺔ ﻤﻊ ﺒﻌﻀﻬﺎ ﺍﻟﺒﻌﺽ ﻭﻤﻭﺼﻭﻟﺔ ﺇﻟﻰ ﻗﻁﺏ ﺍﻟﺘﻐﺫﻴﺔ ﻭﻴﻜﻭﻥ ﻤﻬﺒﻁ ﻜل ﻟﻴـﺩ‬ ‫ﻤﺘﺼل ﻤﻊ ﺍﻟﻘﻁﺏ ﺍﻟﻤﺴﺅﻭل ﻋﻥ ﺇﻀﺎﺀﺘﻪ ، ﺤﻴﺙ ﺃﻥ ﺍﻟﻠﻴﺩ ﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ‪‬ﻀﺎﺀ ﻋﻨﺩﻤﺎ ﻴﺭﺩ ﻋﻠﻰ ﻤﻬﺒﻁﻪ )0( ﻤﻨﻁﻘﻲ ﻭ ‪‬ﻁﻔﺊ‬ ‫ﻴ‬ ‫ﻴ‬ ‫ﻋﻨﺩﻤﺎ ﻴﺭﺩ ﻋﻠﻰ ﻤﻬﺒﻁﻪ )1( ﻤﻨﻁﻘﻲ ﻤﻊ ﺍﻷﺨﺫ ﺒﻌﻴﻥ ﺍﻻﻋﺘﺒﺎﺭ ﺃﻥ ﻴﻜﻭﻥ ﻗﻁﺏ ﺍﻟﺘﻐﺫﻴﺔ ﻟﻠﺨﺎﻨﺔ ﻤﻭﺼﻭل ﺇﻟﻰ ﺠﻬﺩ )1( ﻤﻨﻁﻘﻲ‬ ‫ﻭ ‪‬ﺴﻤﻰ ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻋﺎﺩ ﹰ ﻓﻲ ﺍﻟﺴﻭﻕ ‪‬ﻅﻬﺭ ﺭﻗﻤﻲ ﻤﻭﺠﺏ ﻤﺸﺘﺭﻙ .‬ ‫ﻤ‬ ‫ﺓ‬ ‫ﻴ‬ ‫ﻭ ‪‬ﺒ‪‬ﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﺍﻟﻭﺼل ﺍﻟﺩﺍﺨﻠﻲ ﻟﹼﻴﺩﺍﺕ ﻓﻲ ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻤﻥ ﺸﺎﺸﺎﺕ ﺍﻹﻅﻬﺎﺭ :‬ ‫ﻠ‬ ‫ﻴﻴ‬ ‫اﻟﻔﺎرس ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب واﻹﺗﺼﺎﻻت‬ ‫ﺳﻮرﯾﺎ – ﺣﻤﺎه- ھـ-916922 33 369+‬
  • 25. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫‪a‬‬ ‫‪b‬‬ ‫‪g‬‬ ‫)1( ﻤﻨﻁﻘﻲ‬ ‫)0( ﻤﻨﻁﻘﻲ‬ ‫2 . اﻟﺸﺎﺷﺔ ذات اﻟﻤﮭﺎﺑﻂ اﻟﻤﺸﺘﺮﻛﺔ :‬ ‫ﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﺘﻜﻭﻥ ﻤﻬﺎﺒﻁ ﺍﻟﻠﻴﺩﺍﺕ ﺍﻟﺴﺒﻌﺔ ﻤﺘﺼﻠﺔ ﻤﻊ ﺒﻌﻀﻬﺎ ﺍﻟﺒﻌﺽ ﻭﻤﻭﺼﻭﻟﺔ ﺇﻟﻰ ﻗﻁﺏ ﺍﻟﺘﻐﺫﻴﺔ ﻭﻴﻜﻭﻥ ﻤﺼﻌﺩ ﻜل ﻟﻴـﺩ‬ ‫ﻤﺘﺼل ﻤﻊ ﺍﻟﻘﻁﺏ ﺍﻟﻤﺴﺅﻭل ﻋﻥ ﺇﻀﺎﺀﺘﻪ ، ﺤﻴﺙ ﺃﻥ ﺍﻟﻠﻴﺩ ﻓﻲ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ‪‬ﻀﺎﺀ ﻋﻨﺩﻤﺎ ﻴﺭﺩ ﻋﻠﻰ ﻤﺼﻌﺩﻩ )1( ﻤﻨﻁﻘﻲ ﻭ ‪‬ﻁﻔﺊ‬ ‫ﻴ‬ ‫ﻴ‬ ‫ﻋﻨﺩﻤﺎ ﻴﺭﺩ ﻋﻠﻰ ﻤﺼﻌﺩﻩ )0( ﻤﻨﻁﻘﻲ ﻤﻊ ﺍﻷﺨﺫ ﺒﻌﻴﻥ ﺍﻻﻋﺘﺒﺎﺭ ﺃﻥ ﻴﻜﻭﻥ ﻗﻁﺏ ﺍﻟﺘﻐﺫﻴﺔ ﻟﻠﺨﺎﻨﺔ ﻤﻭﺼﻭل ﺇﻟﻰ ﺠﻬﺩ )0( ﻤﻨﻁﻘﻲ‬ ‫ﻭ ‪‬ﺴﻤﻰ ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻋﺎﺩ ﹰ ﻓﻲ ﺍﻟﺴﻭﻕ ‪‬ﻅﻬﺭ ﺭﻗﻤﻲ ﺴﺎﻟﺏ ﻤﺸﺘﺭﻙ .‬ ‫ﻤ‬ ‫ﺓ‬ ‫ﻴ‬ ‫ﻭ ‪‬ﺒ‪‬ﻥ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ ﺍﻟﻭﺼل ﺍﻟﺩﺍﺨﻠﻲ ﻟﹼﻴﺩﺍﺕ ﻓﻲ ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻤﻥ ﺸﺎﺸﺎﺕ ﺍﻹﻅﻬﺎﺭ :‬ ‫ﻠ‬ ‫ﻴﻴ‬ ‫‪a‬‬ ‫‪b‬‬ ‫‪g‬‬ ‫ﺍﻵﻥ ﻭﺒﻔﺭﺽ ﺃﻥ ﻟﺩﻴﻨﺎ ﺸﺎﺸﺔ ﺇﻅﻬﺎﺭ ﺫﺍﺕ ﺍﻟﺴﺒﻊ ﻗﻁﻊ ).‪ (7-Seg‬ﺒﺨﺎﻨﺔ ﻭﺍﺤﺩﺓ ﺫﺍﺕ ﻤﻬﺎﺒﻁ ﻤﺸﺘﺭﻜﺔ )ﺴـﺎﻟﺏ ﻤـﺸﺘﺭﻙ( ﻭ‬ ‫ﺴﻨﻜﺘﺏ ﻓﻴﻤﺎ ﻴﻠﻲ ﺍﻟﺤﺎﻻﺕ ﺍﻟﻤﻨﻁﻘﻴﺔ ﻷﻗﻁﺎﺏ ﻫﺫﻩ ﺍﻟﺨﺎﻨﺔ ﺍﻟﻤﻁﻠﻭﺒﺔ ﻟﺘﻤﺜﻴل ﺍﻷﺭﻗﺎﻡ ﺍﻟﻤﺨﺘﻠﻔﺔ :‬ ‫اﻟﻔﺎرس ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب واﻹﺗﺼﺎﻻت‬ ‫ﺳﻮرﯾﺎ – ﺣﻤﺎه- ھـ-916922 33 369+‬
  • 26. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫ﺸﻜل ﺍﻟﺭﻗﻡ ﻋﻠﻰ‬ ‫ﺍﻟﺭﻗﻡ‬ ‫‪a‬‬ ‫‪b‬‬ ‫‪c‬‬ ‫‪d‬‬ ‫‪e‬‬ ‫‪f‬‬ ‫‪g‬‬ ‫ﺍﻟﺸﺎﺸﺔ‬ ‫0‬ ‫1‬ ‫1‬ ‫1‬ ‫1‬ ‫1‬ ‫1‬ ‫0‬ ‫1‬ ‫0‬ ‫1‬ ‫1‬ ‫0‬ ‫0‬ ‫0‬ ‫0‬ ‫2‬ ‫1‬ ‫1‬ ‫0‬ ‫1‬ ‫1‬ ‫0‬ ‫1‬ ‫3‬ ‫1‬ ‫1‬ ‫1‬ ‫1‬ ‫0‬ ‫0‬ ‫1‬ ‫4‬ ‫0‬ ‫1‬ ‫1‬ ‫0‬ ‫0‬ ‫1‬ ‫1‬ ‫5‬ ‫1‬ ‫0‬ ‫1‬ ‫1‬ ‫0‬ ‫1‬ ‫1‬ ‫6‬ ‫1‬ ‫0‬ ‫1‬ ‫1‬ ‫1‬ ‫1‬ ‫1‬ ‫7‬ ‫1‬ ‫1‬ ‫1‬ ‫0‬ ‫0‬ ‫0‬ ‫0‬ ‫8‬ ‫1‬ ‫1‬ ‫1‬ ‫1‬ ‫1‬ ‫1‬ ‫1‬ ‫9‬ ‫1‬ ‫1‬ ‫1‬ ‫1‬ ‫0‬ ‫1‬ ‫1‬ ‫اﻟﻔﺎرس ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب واﻹﺗﺼﺎﻻت‬ ‫ﺳﻮرﯾﺎ – ﺣﻤﺎه- ھـ-916922 33 369+‬
  • 27. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫ﺸﺭﺡ ﺩﺍﺭﺓ ﺍﻟﻤﺸﺭﻭﻉ :‬ ‫ﺇ ‪ ‬ﺍﻟﺩﺍﺭﺓ ﺍﻟﻤﻁﻠﻭﺒﺔ ‪‬ﺒ‪‬ﻨﺔ ﻓﻲ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻲ :‬ ‫ﻤﻴ‬ ‫ﻥ‬ ‫ﻭﻨﻼﺤﻅ ﻓﻲ ﻫﺫﻩ ﺍﻟﺩﺍﺭﺓ ﺃﻨﻪ ﺘ ‪ ‬ﻭﺼل ﺍﻷﻗﻁﺎﺏ )‪ (a,b,c,d,e,f,g‬ﻟﻠﺨﺎﻨﺎﺕ ﺍﻷﺭﺒﻊ ﻤﻊ ﺃﻗﻁﺎﺏ ﺍﻟﻤﺘﺤﻜﻡ‬ ‫ﻡ‬ ‫)6‪ (PB0,PB1,PB2,PB3,PB4,PB5.PB‬ﻋﻠﻰ ﺍﻟﺘﺭﺘﻴﺏ ، ﻭﺒﺎﻟﺘﺎﻟﻲ ﻓﺈﻥ ﺍﻟﻨﺎﻓﺫﺓ )‪ (B‬ﻓﻲ ﺍﻟﻤﺘﺤﻜﻡ ﻴﺠﺏ ﺃﻥ ﺘﻜﻭﻥ ﻨﺎﻓﺫﺓ‬ ‫ﺨﺭﺝ ، ﻜﻤﺎ ﻨﻼﺤﻅ ﻤﻊ ﺃﻥ ﺃﻗﻁﺎﺏ ﺍﻟﺘﻔﻌﻴل ﻟﻠﺨﺎﻨﺎﺕ ﺍﻷﺭﺒﻊ ﺘﻡ ﻭﺼﻠﻬﺎ ﻤﻊ ﺃﻗﻁﺎﺏ ﺍﻟﻤﺘﺤﻜﻡ )0‪ (PD2,PD1,PD‬ﻋﻥ ﻁﺭﻴﻕ‬ ‫ﺃﺭﺒﻌﺔ ﺘﺭﺍﻨﺯﺴﺘﻭﺭﺍﺕ ﻤﻥ ﺍﻟﻨﻭﻉ )‪ (NPN‬ﻭﺍﻟﺘﻲ ﺘﻌﻤل ﻜﻤﻔﺘﺎﺡ ﺍﻟﻜﺘﺭﻭﻨﻲ ، ﺇﺫ ﻴﻘﻭﻡ ﻫﺫﺍ ﺍﻟﺘﺭﺍﻨﺯﻴﺴﺘﻭﺭ ﺒﻭﺼل ﻗﻁﺏ ﺍﻟﺘﻔﻌﻴل‬ ‫ﻟﻠﺨﺎﻨﺔ ﺇﻟﻰ ﺍﻷﺭﺽ )ﺘﻔﻌﻴل ﻫﺫﻩ ﺍﻟﺨﺎﻨﺔ( ﻋﻨﺩﻤﺎ ﻴﺭﺩ )1( ﻤﻨﻁﻘﻲ ﻋﻠﻰ ﻗﺎﻋﺩﺘﻪ ، ﻭﻴﻘﻭﻡ ﺒﻔﺼل ﻗﻁﺏ ﺍﻟﺘﻔﻌﻴل ﻟﻠﺨﺎﻨﺔ ﻋﻥ‬ ‫ﺍﻷﺭﺽ )ﺤﺠﺏ ﻫﺫﻩ ﺍﻟﺨﺎﻨﺔ( ﻋﻨﺩﻤﺎ ﻴﺭﺩ )0( ﻤﻨﻁﻘﻲ ﻋﻠﻰ ﻗﺎﻋﺩﺘﻪ .‬ ‫ﻤﺨﺎﺭﺝ ﺍﻟﻤﺘﺤﻜﻡ ﺍﻟﺘﺎﻟﻴﺔ ﹸﻘﺎﺒل ﻤﺩﺍﺨل ﺸﺎﺸﺔ ﺍﻹﻅﻬﺎﺭ ﺍﻟﺘﺎﻟﻴﺔ :‬ ‫ﺘ‬ ‫ﺇﺫﺍ ﺩﻗﻘﻨﺎ ﻓﻲ ﺍﻟﺭﺴﻡ ﺍﻟﺘﺨﻁﻴﻁﻲ ﻟﻠﺩﺍﺭﺓ ﻨﺠﺩ ﺃﻥ‬ ‫3‪PB7 PB6 PB5 PB4 PB‬‬ ‫0‪PB2 PB1 PB‬‬ ‫*‬ ‫‪g‬‬ ‫‪f‬‬ ‫‪e‬‬ ‫‪d‬‬ ‫‪c‬‬ ‫‪b‬‬ ‫‪a‬‬ ‫ﻨﻌﺭﻑ ﺍﻟﺸﻴﻔﺭﺓ ﺍﻟﻤﻘﺎﺒﻠﺔ ﻟﻪ ﻭﺍﻟﺘﻲ ﺘﺅﺩﻱ ﺇﻟﻰ ﺇﻅﻬﺎﺭﻩ ﻋﻠﻰ ﺸﺎﺸﺔ ﺍﻹﻅﻬﺎﺭ ﺤﺘﻰ‬ ‫ﻭﺒﺎﻟﺘﺎﻟﻲ ﻓﺈﻥ ﺃﻱ ﺭﻗﻡ ﻨﺭﻴﺩ ﺇﻅﻬﺎﺭﻩ ﻴﺠﺏ ﺃﻥ‬ ‫ﹸﺨ ‪‬ﺠﻬﺎ ﻋﻠﻰ ﺃﻗﻁﺎﺏ ﺍﻟﻨﺎﻓﺫﺓ )‪ ، (B‬ﻓﻤﺜ ﹰ ﻹﻅﻬﺎﺭ ﺍﻟﺭﻗﻡ )1( ﻴﺠﺏ ﺃﻥ ﹸﺨ ‪‬ﺝ ﻋﻠﻰ ﺍﻟﻨﺎﻓﺫﺓ )‪ (B‬ﺍﻟﺭﻗﻡ ﺍﻟﺜﻨﺎﺌﻲ ﺍﻟﺘﺎﻟﻲ‬ ‫ﻨ ﺭ‬ ‫ﻼ‬ ‫ﻨ ﺭ‬ ‫)01100000( ﻭﺍﻟﺫﻱ ﻴﺴﺎﻭﻱ ﺴﺕ ﻋﺸﺭ‪‬ﹰ ﺍﻟﻌﺩﺩ )60‪. (0x‬‬ ‫ﻴﺎ‬ ‫ﻭﺍﻵﻥ ﻟﻨﻜﺘﺏ ﺠﺩﻭل ‪‬ﺒﻴﻥ ﺸﻴﻔﺭﺍﺕ ﺍﻷﺭﻗﺎﻡ ﺍﻟﻤﺨﺘﻠﻔﺔ ﻭﻓﻘﹰ ﻟﻠﺘﺭﺘﻴﺏ ﺍﻟﺴﺎﺒﻕ :‬ ‫ﺎ‬ ‫ﻴ‬ ‫ﺍﻟﺭﻗﻡ ﺍﻟﺴﺕ‬ ‫ﺍﻟﺭﻗﻡ‬ ‫7‪PB‬‬ ‫6‪PB‬‬ ‫5‪PB‬‬ ‫4‪PB‬‬ ‫3‪PB‬‬ ‫2‪PB‬‬ ‫1‪PB‬‬ ‫0‪PB‬‬ ‫ﻋﺸﺭﻱ‬ ‫ﺎ‬ ‫ﻋﺸﺭﻴ ﹰ‬ ‫*‬ ‫‪g‬‬ ‫‪f‬‬ ‫‪e‬‬ ‫‪d‬‬ ‫‪c‬‬ ‫‪b‬‬ ‫‪a‬‬ ‫ﺍﻟﻤﻜﺎﻓﺊ‬ ‫0‬ ‫0‬ ‫0‬ ‫1‬ ‫1‬ ‫1‬ ‫1‬ ‫1‬ ‫1‬ ‫‪0x3f‬‬ ‫1‬ ‫0‬ ‫0‬ ‫0‬ ‫0‬ ‫0‬ ‫1‬ ‫1‬ ‫0‬ ‫60‪0x‬‬ ‫2‬ ‫0‬ ‫1‬ ‫0‬ ‫1‬ ‫1‬ ‫0‬ ‫1‬ ‫1‬ ‫‪0x5B‬‬ ‫3‬ ‫0‬ ‫1‬ ‫0‬ ‫0‬ ‫1‬ ‫1‬ ‫1‬ ‫1‬ ‫‪0x4f‬‬ ‫4‬ ‫0‬ ‫1‬ ‫0‬ ‫1‬ ‫0‬ ‫1‬ ‫1‬ ‫0‬ ‫66‪0x‬‬ ‫5‬ ‫0‬ ‫1‬ ‫1‬ ‫0‬ ‫1‬ ‫1‬ ‫0‬ ‫1‬ ‫‪0x6d‬‬ ‫6‬ ‫0‬ ‫1‬ ‫1‬ ‫1‬ ‫1‬ ‫1‬ ‫0‬ ‫0‬ ‫‪0x7c‬‬ ‫7‬ ‫0‬ ‫0‬ ‫0‬ ‫0‬ ‫0‬ ‫1‬ ‫1‬ ‫1‬ ‫70‪0x‬‬ ‫8‬ ‫0‬ ‫1‬ ‫1‬ ‫1‬ ‫1‬ ‫1‬ ‫1‬ ‫1‬ ‫‪0x7f‬‬ ‫9‬ ‫0‬ ‫1‬ ‫1‬ ‫0‬ ‫1‬ ‫1‬ ‫1‬ ‫1‬ ‫‪0x6f‬‬ ‫اﻟﻔﺎرس ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب واﻹﺗﺼﺎﻻت‬ ‫ﺳﻮرﯾﺎ – ﺣﻤﺎه- ھـ-916922 33 369+‬
  • 28. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫ﺩﺍﺭﺓ ﺍﻟﻤﺸﺭﻭﻉ‬ ‫ﺍﻟﺒﺭﻨﺎﻤﺞ :‬ ‫ﻨﺭﻴﺩ ﺇﻅﻬﺎﺭ ﺍﻟﺭﻗﻡ 210 ﻋﻠﻰ ﺍﻟﻤﻅﻬﺭﺍﺕ ﺤﻴﺙ ﺍﻷﺤﺎﺩ ﻭﻫﻭ 2 ﻤﺨﺯﻥ ﻓﻲ ﻤﺘﺤﻭل ‪ I‬ﻭﺍﻟﻌﺸﺭﺍﺕ 1 ﻓﻲ ﺍﻟﻤﺘﺤﻭل ‪ j‬ﻭﺍﻟﻤﺌﺎﺕ 0‬ ‫ﻓﻲ ﺍﻟﻤﺘﺤﻭل ‪. o‬‬ ‫>‪#include<90s2313.h‬‬ ‫;)‪void delay(void‬‬ ‫)(‪main‬‬ ‫{‬ ‫ﺘﻌﺭﻴﻑ ﻤﺼﻔﻭﻓﺔ ﻤﻥ ﺃﺠل ﺍﻟﺘﺸﻔﻴﺭ ﻹﻅﻬﺎﺭ ﺍﻷﺭﻗﺎﻡ‬ ‫;0=‪unsigned char i=2,j=1,o‬‬ ‫;}‪unsigned char decode[10]={0x3f,0x06,0x5B,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x6f‬‬ ‫;0=‪PORTD‬‬ ‫ﺘﻬﻴﺌﺔ ﺍﻟﻤﻨﻔﺫ ‪ D‬ﻜﻠﻪ ﺨﺭﺝ‬ ‫;‪DDRD=255; // 255=0xff‬‬ ‫;0=‪PORTB‬‬ ‫ﺘﻬﻴﺌﺔ ﺍﻟﻤﻨﻔﺫ ‪ B‬ﻜﻠﻪ ﺨﺭﺝ‬ ‫;‪DDRB=0XFF‬‬ ‫)1( ‪while‬‬ ‫ﺤﻠﻘﺔ ﻻﻨﻬﺎﺌﻴﺔ‬ ‫{‬ ‫ﻁﺒﻕ ﻋﻠﻰ ﺍﻟﻤﻨﻔﺫ‪ B‬ﺗﺸﻔﯿﺮ ﻋﺪد اﻷﺣﺎد ‪i‬‬ ‫;]‪PORTB=decode[i‬‬ ‫ﺘﻔﻌﻴل ﺘﺭﺍﻨﺯﺴﺘﻭﺭ ﺍﻷﺤﺎﺩ // ;1=‪PORTD‬‬ ‫;)(‪delay‬‬ ‫اﻟﻔﺎرس ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب واﻹﺗﺼﺎﻻت‬ ‫ﺳﻮرﯾﺎ – ﺣﻤﺎه- ھـ-916922 33 369+‬
  • 29. C ‫ ﺑﻠﻐﺔ‬AVR ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت‬ PORTD= 0; PORTB= decode[j]; PORTD= 2; delay(); PORTD = 0; PORTB = decode[o]; PORTD = 4; delay(); PORTD = 0; }; // end while } // end main void delay(void) { int x=999; while (x !=0) x=x-1; } ‫اﻟﻔﺎرس ﻟﺘﻘﻨﯿﺎت اﻟﺤﺎﺳﻮب واﻹﺗﺼﺎﻻت‬ +963 33 229619-‫ﺳﻮرﯾﺎ – ﺣﻤﺎه- ھـ‬
  • 30. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫أﻧﻮاع اﻟﻤﺘﺤﻮﻻت‬ ‫‪Data Types‬‬ ‫‪Type‬اﻟﻨﻮع‬ ‫)‪Size (Bits‬اﻟﺤﺠﻢ‬ ‫‪Range‬اﻟﻤﺠﺎل‬ ‫‪bit‬‬ ‫1‬ ‫1,0‬ ‫‪char‬‬ ‫8‬ ‫721 ‪-128 to‬‬ ‫‪unsigned char‬‬ ‫8‬ ‫552 ‪0 to‬‬ ‫‪signed char‬‬ ‫8‬ ‫721 ‪-128 to‬‬ ‫‪int‬‬ ‫61‬ ‫76723 ‪-32768 to‬‬ ‫‪short int‬‬ ‫61‬ ‫76723 ‪-32768 to‬‬ ‫‪unsigned int‬‬ ‫61‬ ‫53556 ‪0 to‬‬ ‫‪signed int‬‬ ‫61‬ ‫76723 ‪-32768 to‬‬ ‫‪long int‬‬ ‫23‬ ‫7463847412 ‪-2147483648 to‬‬ ‫‪unsigned long int‬‬ ‫23‬ ‫5927694924 ‪0 to‬‬ ‫‪signed long int‬‬ ‫23‬ ‫7463847412 ‪-2147483648 to‬‬ ‫‪float‬‬ ‫23‬ ‫83‪±1.175e-38 to ±3.402e‬‬ ‫‪double‬‬ ‫23‬ ‫83‪±1.175e-38 to ±3.402e‬‬ ‫‪klkll‬‬ ‫ﺗﻮاﺑﻊ اﻟﺘﺄﺧﯿﺮ اﻟﺰﻣﻨﻲ‬ ‫‪Delay Functions‬‬ ‫ﺘﻘﻭﻡ ﻫﺫﻩ ﺍﻟﺘﻭﺍﺒﻊ ﺒﺎﻟﻘﻴﺎﻡ ﺒﻌﻤﻠﻴﺔ ﺍﻟﺘﺄﺨﻴﺭ ﺍﻟﺯﻤﻨﻲ ﻓﻲ ﺍﻟﺒﺭﺍﻤﺞ ﺍﻟﻜﺘﻭﺒﺔ ﺒﻠﻐﺔ ﺍﻟـ ‪ C‬ﻭﻫﺫﻩ ﺍﻟﺘﻭﺍﺒﻊ ﻤﻀﻤﻨﺔ ﻓﻲ ﺍﻟﻤﻜﺘﺒﺔ‬ ‫)‪ (delay.h‬ﻟﺫﺍ ﻴﺠﺏ ﺇﺩﺭﺍﺝ ﻫﺫﻩ ﺍﻟﻤﻜﺘﺒﺔ ﻗﺒل ﺍﺴﺘﺨﺩﺍﻡ ﺃﻱ ﺘﺎﺒﻊ ﺘﺄﺨﻴﺭ ﺯﻤﻨﻲ .‬ ‫ﻭﻫﺫﻩ ﺍﻟﺘﻭﺍﺒﻊ ﻫﻲ :‬ ‫)‪void delay_us(unsigned int n‬‬ ‫ﻴﻘﻭﻡ ﻫﺫﺍ ﺍﻟﺘﺎﺒﻊ ﺒﺈﺠﺭﺍﺀ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺄﺨﻴﺭ ﺍﻟﺯﻤﻨﻲ ﻓﻲ ﺭﺘﺒﺔ ﺍﻟﻤﺎﻴﻜﺭﻭ ﺜﺎﻨﻴﺔ ﺤﻴﺙ ‪ n‬ﻴﻤﺜل ﺯﻤﻥ ﺍﻟﺘﺄﺨﻴﺭ ﻭﻴﺠﺏ ﺃﻥ‬ ‫ﻴﻜﻭﻥ ﻤﻥ ﺍﻟﻨﻤﻁ ‪ integer‬ﺃﻱ ﺼﺤﻴﺢ .‬ ‫)‪void delay_ms(unsigned int n‬‬ ‫ﻴﻘﻭﻡ ﻫﺫﺍ ﺍﻟﺘﺎﺒﻊ ﺒﺈﺠﺭﺍﺀ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺄﺨﻴﺭ ﺍﻟﺯﻤﻨﻲ ﻓﻲ ﺭﺘﺒﺔ ﺍﻟﻤﻴﻠﻲ ﺜﺎﻨﻴﺔ ﺤﻴﺙ ‪ n‬ﻴﻤﺜل ﺯﻤﻥ ﺍﻟﺘﺄﺨﻴﺭ ﻭﻴﺠﺏ ﺃﻥ ﻴﻜﻭﻥ‬ ‫ﻤﻥ ﺍﻟﻨﻤﻁ ‪ integer‬ﺃﻱ ﺼﺤﻴﺢ .‬ ‫ﻣﻼﺣﻈﺔ ﻋﻨﺪ إدراج ھﺬه اﻟﺘﻮاﺑﻊ ﯾﺠﺐ أن ﻻ ﻧﻀﻊ ‪ void‬وإﻻ ﺳﻮف ﯾﻈﮭﺮ اﻟﻤﺘﺮﺟﻢ ﺑﺄن ھﻨﺎك ﺧﻄﺄ .‬ ‫ﺍﻟﻔﺎﺭﺱ ﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺤﺎﺴﻭﺏ ﻭﺍﻹﺘﺼﺎﻻﺕ‬ ‫ﺴﻭﺭﻴﺎ – ﺤﻤﺎﻩ- ﻫـ-916922 33 369+‬
  • 31. ‫ﺑﺮﻣﺠﺔ ﻣﺘﺤﻜﻤﺎت ‪ AVR‬ﺑﻠﻐﺔ ‪C‬‬ ‫إدراج ﻟﻐﺔ اﻷﺳﻤﺒﻠﻲ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ .‬ ‫ﻴﻤﻜﻥ ﺇﺩﺭﺍﺝ ﻟﻐﺔ ﺍﻷﺴﻤﺒﻠﻲ ﻓﻲ ﻜﺘﺎﺒﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻓﻲ ﺃﻱ ﻤﻨﻁﻘﺔ ﻭﺫﻟﻙ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﺘﻭﺠﻴﻪ ‪ #asm‬ﻓﻲ ﺒﺩﺍﻴﺔ ﺍﻟﺘﺼﺭﻴﺢ‬ ‫ﻋﻥ ﺍﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺒﻌﺩﻩ ﺒﻠﻐﺔ ﺍﻷﺴﻤﺒﻠﻲ ﻭﻴﺠﺏ ﺃﻥ ﻨﻨﺘﻬﻲ ﺒﺎﻟﺘﻭﺠﻴﻪ ‪ #endasm‬ﺩﺍﻻ ً ﻋﻠﻰ ﺍﻨﺘﻬﺎﺀ ﻟﻐﺔ ﺍﻷﺴﻤﺒﻠﻲ .‬ ‫ﻋﻠﻰ ﺴﺒﻴل ﺍﻟﻤﺜﺎل :‬ ‫‪#asm‬‬ ‫‪nop‬‬ ‫‪nop‬‬ ‫‪#endasm‬‬ ‫ﺃﻭ ﻴﻜﻨﻨﺎ ﺍﻥ ﻨﻜﺘﺏ ﺍﻟﺘﻭﺍﺒﻊ ﺒﻠﻐﺔ ﺍﻷﺴﻤﺒﻠﻲ ﻓﻲ ﻨﻔﺱ ﺍﻟﺴﻁﺭ .‬ ‫.‪Inline assembly may also be used‬‬ ‫:‪Example‬‬ ‫/* ‪#asm("sei") /* enable interrupts‬‬ ‫ﻭﻓﻲ ﺤﺎل ﻜﺎﻥ ﻫﻨﺎﻙ ﺃﻜﺜﺭ ﻤﻥ ﺘﻌﻠﻴﻤﺔ ﺃﺴﻤﺒﻠﻲ ﻭﺃﺭﺩﻨﺎ ﻜﺘﺎﺒﺘﻬﺎ ﺒﻨﻔﺱ ﺍﻟﺴﻁﺭ ﻓﻴﺠﺏ ﻋﻨﺩﻫﺎ ﺃﻥ ﻨﻔﺼل ﺒﻴﻥ ﻜل‬ ‫ﺘﻌﻠﻴﻤﺔ ﺒﺎﻹﺸﺎﺭﺓ . ﻤﺜﺎل :‬ ‫)"‪#asm("nopnopnop‬‬ ‫اﻟﺘﻮاﺑﻊ اﻟﺮﯾﺎﺿﯿﺔ :‬ ‫‪Mathematical Functions‬‬ ‫ﺘﻭﺠﺩ ﻫﺫﻩ ﺍﻟﺘﻭﺍﺒﻊ ﻓﻲ ﺍﻟﻤﻜﺘﺒﺔ ‪ math.h‬ﻭﻫﺫﻩ ﺍﻟﺘﻭﺍﺒﻊ ﻫﻲ :‬ ‫)‪unsigned char cabs(signed char x‬‬ ‫ﺇﺭﺠﺎﻉ ﺍﻟﻘﻴﻤﺔﺍﻟﻤﻁﻠﻘﺔ ﻟﻠﻌﺩﺩ ‪ X‬ﻤﻥ ﺍﻟﻨﻤﻁ ﺍﻟﻤﺤﺭﻓﻲ .‬ ‫)‪unsigned int abs(int x‬‬ ‫ﺇﺭﺠﺎﻉ ﺍﻟﻘﻴﻤﺔ ﺍﻟﻤﻁﻠﻘﺔ ﻟﻠﻌﺩﺩ ‪ X‬ﻤﻥ ﺍﻟﻨﻤﻁ ﺍﻟﺼﺤﻴﺢ .‬ ‫)‪unsigned long labs(long int x‬‬ ‫ﺇﺭﺠﺎﻉ ﺍﻟﻘﻴﻤﺔ ﺍﻟﻤﻁﻠﻘﺔ ﻟﻠﻌﺩﺩ ‪ X‬ﻤﻥ ﺍﻟﻨﻤﻁ ﺍﻟﺼﺤﻴﺢ ﺍﻟﻁﻭﻴل .‬ ‫)‪float fabs(float x‬‬ ‫ﺍﻟﻔﺎﺭﺱ ﻟﺘﻘﻨﻴﺎﺕ ﺍﻟﺤﺎﺴﻭﺏ ﻭﺍﻹﺘﺼﺎﻻﺕ‬ ‫ﺴﻭﺭﻴﺎ – ﺤﻤﺎﻩ- ﻫـ-916922 33 369+‬