Professional Documents
Culture Documents
Micro-8051-Www ControlMakers Ir
Micro-8051-Www ControlMakers Ir
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
ﺩﻳﺠﻴﺘﺎﻝ:
r
ﺑﻪ ﺍﻳﻦ ﻋﻠﺖ ﻛﻪ ﺍﺻﻮﻝ ﭘﺮﺩﺍﺯﻧﺪﻩﻫﺎ ﻭﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮﻫﺎ ﺑﺮ ﻣﺒﻨﺎﻱ ﺩﻳﺠﻴﺘﺎﻝ ﭘﺎﻳﻪﺭﻳﺰﻱ ﺷﺪﻩ ﺍﺳﺖ ﺷﻤﺎ
.i
ﺩﺭ ﻛﺎﺭ ﺑﺎ ﻣﻴﻜﺮﻭ ﺑﻪ ﻣﺒﺎﺣﺚ ﺩﻳﺠﻴﺘﺎﻝ ﺑﺮﺧﻮﺭﺩ ﻣﻲﻛﻨﻴﺪ.
s
r
ﺩﻳﺠﻴﺘﺎﻝ ﺗﻤﺎﻣﹰﺎ ﺻﻔﺮﻫﺎ ﻭ ﻳﻚﻫﺎﺋﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﺑﻮﺳﻴﻠﻪ ﺁﻥﻫﺎ ﺗﻤﺎﻣﻲ ﻋﻤﻠﻴﺎﺕﻫﺎﻱ ﺭﻳﺎﺿﻲ ﻭ
e
k
ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ ﺻﻮﺭﺕ ﻣﻲﮔﻴﺮﺩ ﻭ ﻫﻴﭻﭼﻴﺰ ﺟﺰ ﺻﻔﺮ ﻭ ﻳﻚ ﺑﺮﺍﻱ ﺩﻳﺠﻴﺘﺎﻝ ﻣﻌﻨﺎ ﻭ ﻣﻔﻬﻮﻣﻲ ﻧﺪﺍﺭﺩ.
a
ﺩﺭ ﺷﻜﻞ ﺯﻳﺮ ﭼﻨﺪ ﻣﺘﺮﺍﺩﻑ ﺩﻳﺠﺘﺎﻟﻲ ﻧﺸﺎﻥ ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ:
lM
o
ﺍﮔﺮ ﻛﺴﻲ ﺍﺯ ﺷﻤﺎ ﺑﭙﺮﺳﺪ ﭼﻨﺪ ﺳﺎﻝ ﺩﺍﺭﻳﺪ؟ ﭼﻪ ﭘﺎﺳﺨﻲ ﺧﻮﺍﻫﻴﺪ ﺩﺍﺩ؟
١٨ﺳﺎﻝ ﺩﺍﺭﻡ ٣٦ ،ﺳﺎﻝ ﺩﺍﺭﻡ ﻭ ﻳﺎ ﻫﺮ ﭘﺎﺳﺦ ﺩﻳﮕﺮﻱ .ﺩﺭ ﺍﻳﻦ ﭘﺎﺳﺦﻫﺎ ﺍﺯ ﺍﻋﺪﺍﺩﻱ ﺍﺳﺘﻔﺎﺩﻩ ﺷﺪﻩ
r
.i
ﺍﺳﺖ ﻛﻪ ﺍﺯ ﺗﺮﻛﻴﺐ ٠،١،٢،٣،٤،٥،٦،٧،٨،٩ﺳﺎﺧﺘﻪ ﺷﺪﻩ ﺍﺳﺖ .ﺑﻪﺻﻮﺭﺕ ﻣﺨﺘﺼﺮ ﻣﻲﺗﻮﺍﻧﻴﻢ ﺑﮕﻮﺋﻴﻢ ﻣﺎ
s
ﺑﺮﺍﻱ ﻣﺸﺨﺺ ﻛﺮﺩﻥ ﺗﻤﺎﻡ ﺍﻋﺪﺍﺩ ﺍﺯ ﻳﻜﻲ ﻳﺎ ﺗﺮﻛﻴﺐ ﭼﻨﺪ ﺭﻗﻢ ﻓﻮﻕ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻛﻨﻴﻢ ﻳﺎ ﺑﻪﺻﻮﺭﺕ
r
e
ﺳﺎﺩﻩﺗﺮ ﺍﺯ ﺩﻩ ﺭﻗﻢ ﺑﺮﺍﻱ ﻣﺸﺨﺺ ﻛﺮﺩﻥ ﺗﻤﺎﻡ ﺍﻋﺪﺍﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻛﻨﻴﻢ.
k
a ﻧﺎﻡﮔﺬﺍﺭﻯ ﻣﺒﻨﺎﻫﺎ:
lM
ﺑﻪ ﺗﻌﺪﺍﺩ ﺭﻗﻢﻫﺎﺋﻲ ﻛﻪ ﺑﺮﺍﻱ ﻣﺸﺨﺺ ﻛﺮﺩﻥ ﺍﻋﺪﺍﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻧﻤﺎﺋﻴﻢ ﻣﺒﻨﺎﻱﻛﺎﺭﻱ ﮔﻮﺋﻴﻢ.
o
ﻣﺒﻨﺎﻱ ﻛﺎﻣﭙﻴﻮﺗﺮ ﺩﻭ ﻣﻲﺑﺎﺷﺪ ﺯﻳﺮﺍ ﻳﻚ ﺩﺳﺘﮕﺎﻩ ﺩﻳﺠﻴﺘﺎﻟﻲ ﻓﻘﻂ ﺩﻭ ﺭﻗﻢ ﺻﻔﺮ ﻭ ﻳﻚ ﺭﺍ ﻣﺜﺎل:
tr
ﺗﺒﺪﻳﻞ ﻣﺒﻨﺎﻫﺎ:
.C
ﺷﻤﺎ ﻭﻗﺘﻲ ﺍﺯ ﺻﻔﺮ ﺷﺮﻭﻉ ﺑﻪ ﺷﻤﺎﺭﺵ ﻣﻲﻧﻤﺎﺋﻴﺪ ،ﺑﻌﺪ ﺍﺯ ﻋﺪﺩ ﻧﻪ ﺩﻳﮕﺮ ﺭﻗﻤﻲ ﺑﺮﺍﻱ ﻧﻤﺎﻳﺶ ﻋﺪﺩ
w
ﺑﻌﺪﻱ ﻧﺪﺍﺭﻳﺪ ﭘﺲ ﺑﺎ ﺗﺮﻛﻴﺐ ﺩﻭ ﺭﻗﻢ ﻳﻚ ﻭ ﺻﻔﺮ ﻋﺪﺩ ﺟﺪﻳﺪﻱ ﻣﻲﺳﺎﺯﻳﺪ ﻳﻌﻨﻲ ﺑﻌﺪ ﺍﺯ ﺷﻤﺎﺭﺵ ﺩﻩ
w
ﺭﻗﻢ ﺩﺭ ﻣﺒﻨﺎﻱ ﺩﻩ ﺑﻪ ﻋﺪﺩ ) (١٠ﻣﻲﺭﺳﻴﺪ .ﺩﺭ ﻣﺒﻨﺎﻱ ﺩﻭ ﺷﻤﺎ ﭘﺲ ﺍﺯ ﺷﻤﺎﺭﺵ ﺩﻭ ﺭﻗﻢ ﺑﻪ ﻋﺪﺩ )(١٠
w
ﺧﻮﺍﻫﻴﺪ ﺭﺳﻴﺪ.
r
.i
0 0 0 0
1 1 1 1
s
2 2 10 2
r
3 3 11 3
e
4 4 100 4
k
5 5 101 5
a
6 6 110 6
lM
7 7 111 7
8 10 1000 8
9 11 1001 9
o
ﺑﺰﺭﮔﺘﺮﻳﻦ ﺭﻗﻢ ﻣﺒﻨﺎﻱ ﺷﺎﻧﺰﺩﻩ ﺑﺮﺍﺑﺮ ﺑﺰﺭﮔﺘﺮﻳﻦ ﻋﺪﺩ ﭼﻬﺎﺭ ﺭﻗﻤﻲ ﻣﺒﻨﺎﻱ ﺩﻭ ﺍﺳﺖ ﻭ ﻧﮑﺘﻪ:
w
ﺑﺰﺭﮔﺘﺮﻳﻦ ﺭﻗﻢ ﻣﺒﻨﺎﻱ ﻫﺸﺖ ﺑﺮﺍﺑﺮ ﺑﺰﺭﮔﺘﺮﻳﻦ ﻋﺪﺩ ﺳﻪ ﺭﻗﻤﻲ ﻣﺒﻨﺎﻱ ﺩﻭ ﻣﻲﺑﺎﺷﺪ ﻭ ﺍﺯ ﺍﻳﻦ ﻧﻜﺘﻪ ﺍﻳﻦﮔﻮﻧﻪ
w
ﻣﻲﺗﻮﺍﻥ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ ﻛﻪ ﺑﺮﺍﻱ ﺗﺒﺪﻳﻞ ﺍﻋﺪﺍﺩ ﻣﺒﻨﺎﻱ ﺷﺎﻧﺰﺩﻩ ﻣﻲﺗﻮﺍﻥ ﻫﺮ ﺭﻗﻢ ﺁﻥﺭﺍ ﺑﺎ ﭼﻬﺎﺭ ﺭﻗﻢ ﻣﺒﻨﺎﻱ ﺩﻭ
ﻣﺘﻨﺎﻇﺮ ﺁﻥ ﺭﻗﻢ ﺟﺎﻳﮕﺰﻳﻦ ﻛﺮﺩ ﻭ ﻫﺮ ﺭﻗﻢ ﻣﺒﻨﺎﻱ ﻫﺸﺖ ﺭﺍ ﻣﻲﺗﻮﺍﻥ ﺑﺎﺳﻪ ﺭﻗﻢ ﻣﺒﻨﺎﻱ ﺩﻭ ﺟﺎﻳﮕﺰﻳﻦ ﻛﺮﺩ.
r
.i
ﺑﻪ ﺟﺪﻭﻝ ﻓﻮﻕ ﺩﻗﺖ ﻛﻨﻴﺪ ﺭﻗﻤﻲ ﻣﺎﻧﻨﺪ 1Hﺑﺮﺍﺑﺮ ﻳﻚ ﺭﻗﻢ ﻣﺒﻨﺎﻱ ﺩﻭ ﺍﺳﺖ ﺩﺭ ﻧﺘﻴﺠﻪ ﺳﻪ ﺭﻗﻢ
s
r
ﺳﻤﺖ ﭼﭗ ﺭﺍ ﺑﺎ ﭘﺮ ﺻﻔﺮ ﻣﻲﻧﻤﺎﺋﻴﻢ.
e
k
ﻣﻔﻬﻮﻡ ﭘﻮﺭﺕ:
a
ﭘﻮﺭﺕ ﺩﺭ ﺍﺻﻄﻼﺡ ﺑﻪ ﻣﻌﻨﺎﻱ ﺩﺭﮔﺎﻩ ﺍﺳﺖ .ﻳﻌﻨﻲ ﺟﺎﻳﮕﺎﻫﻲ ﻛﻪ ﺑﻪﺗﻮﺍﻥ ﺍﺯ ﺁﻥ ﺑﻪﻋﻨﻮﺍﻥ ﻣﺤﻞ ﻭﺭﻭﺩ
lM
ﻭ ﺧﺮﻭﺝ ﺩﺍﺩﻩ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ .ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﺧﺎﻧﻮﺍﺩﻩ 8x51ﺩﺍﺭﺍﻱ ٤ﭘﻮﺭﺕ ﺍﺳﺖ ﻛﻪ ﺑﻪ ﺗﺮﺗﻴﺐ
o
) (P3),(P2),(P1),(P0ﻧﺎﻣﮕﺬﺍﺭﻱ ﺷﺪﻩ ﺍﺳﺖ .ﻫﺮ ﭘﻮﺭﺕ ﺩﺍﺭﺍﻱ ﻫﺸﺖ ﭘﻴﻦ ﺍﺳﺖ ﻛﻪ ﺑﺎ ﻫﻤﺎﻥ ﻧﺎﻡ،
tr
ﻳﻚ ﺑﺎﻳﺖ ﺍﺯ ﺣﺎﻓﻈﻪ RAMﺭﺍ ﺑﻪ ﺧﻮﺩ ﺍﺧﺘﺼﺎﺹ ﺩﺍﺩﻩ ﺍﺳﺖ .ﺩﺭ ﻧﺘﻴﺠﻪ ﻫﺮ ﺑﻴﺖ ﻣﺘﻨﺎﻇﺮ ﻳﻚ ﭘﻴﻦ ﺍﺳﺖ
n
o
ﻭ ﺑﺎ ﻳﻚ ﻛﺮﺩﻥ ﻫﺮ ﺑﻴﺖ ﭘﺎﻳﻪ ﻣﺘﻨﺎﻇﺮ ﺁﻥ ﺑﻪ ﺳﻄﺢ ﻣﻨﻄﻘﻲ ) (+٥ﻣﻲ ﺭﻭﺩ ﻭ ﺑﺎ ﺻﻔﺮ ﻛﺮﺩﻥ ﻫﺮ ﺑﻴﺖ ﭘﺎﻳﻪ
.C
ﻧﻈﻴﺮ ﺁﻥ GNDﻣﻲﺷﻮﺩ .ﺩﺭ ﻭﺍﻗﻊ ٤ﭘﻮﺭﺕ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ٣٢ﭘﻴﻦ ﺍﺯ ٤٠ﭘﻴﻦ ﻣﻴﻜﺮﻭ ﺭﺍ ﺍﺷﻐﺎﻝ ﻛﺮﺩﻩ
w
ﺍﺳﺖ.
w
ﭘﻮﺭﺕ P1
r
8 7 6 5 4 3 2 1
.i
ﭘﺎﻳﻪﻫﺎﻯ ١٠ﺗﺎ :١٧
s
r
ﺍﻳﻦ ﭘﺎﻳﻪﻫﺎ ﻣﺮﺑﻮﻁ ﺑﻪ ﭘﻮﺭﺕ ﺳﻪ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﺍﺳﺖ ﻭ ﻣﺘﻨﺎﻇﺮ ﺑﺎ ﺑﺎﻳﺖ P3ﺍﺳﺖ.
e
k
ﭘﻮﺭﺕ P3
ﭘﻮﺭﺕ ﺳﻪ ﻋﻼﻭﻩ ﺑﺮﺍﻳﻨﻜﻪ ﺑﻪ ﻋﻨﻮﺍﻥ ﺩﺭﮔﺎﻩ ﻭﺭﻭﺩﻱ ﻭ ﺧﺮﻭﺟﻲ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﺷﻮﺩ ﺑﺮﺍﻱ ﻛﺎﺭﻫﺎﻱ
tr
ﭼﮕﻮﻧﮕﻲ ﺍﺳﺘﻔﺎﺩﻩ ﻭ ﻧﺤﻮﻩ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﻫﺮ ﻛﺪﺍﻡ ﺍﺯ ﺍﻳﻦ ﻛﺎﺭﺑﺮﺩﻫﺎ ﺩﺭ ﺩﺭﺱﻫﺎﻱ ﺁﻳﻨﺪﻩ ﻧﮑﺘﻪ:
o
.C
ﮔﻔﺘﻪ ﺧﻮﺍﻫﺪ ﺷﺪ .ﺍﻳﻦ ﻛﺎﺭﺑﺮﺩﻫﺎ ﻭ ﭘﺎﻳﻪﻫﺎﻱ ﻣﺘﻨﺎﻇﺮ ﺁﻥﻫﺎ ﺩﺭ ﺟﺪﻭﻝ ﺯﻳﺮ ﺁﻣﺪﻩ ﺍﺳﺖ.
w
ﭘﻮﺭﺕ P2
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
r
ﭘﺎﻳﻪﻫﺎﻯ ٣٢ﺗﺎ :٣٩
.i
ﺍﻳﻦ ﭘﺎﻳﻪﻫﺎ ﻣﺮﺑﻮﻁ ﺑﻪ ﭘﻮﺭﺕ ﺻﻔﺮ ﻭ ﻣﺘﻨﺎﻇﺮ ﺑﺎ ﺑﺎﻳﺖ P0ﺍﺳﺖ ﺍﻳﻦ ﭘﻮﺭﺕ ﺩﺭ ﻫﻨﮕﺎﻡ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ
s
r
ROMﻭRAMﺧﺎﺭﺟﻲ ﺑﻪ ﺻﻮﺭﺕ ﻣﺎﻟﺘﻲ ﭘﻠﻜﺲ ﺷﺪﻩ ﺗﺒﺪﻳﻞ ﻣﻲﺷﻮﺩ .ﻭ ﺩﺭ ﺣﺎﻟﺖ ﻋﺎﺩﻱ ،ﻣﺸﺎﺑﻪ
e
k
ﭘﻮﺭﺕ ﻳﻚ ﻋﻤﻞ ﻣﻲﻛﻨﺪ .ﺩﺭ ﺣﺎﻟﺖ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ROMﻭRAMﺧﺎﺭﺟﻲ ﺷﻤﺎ ﻣﻲﺗﻮﺍﻧﻴﺪ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ
a
ﭘﺎﻳﻪﻱ ALEﻭ ﺍﺗﺼﺎﻝ ﺁﻥ ﺑﻪ ﻳﻚ LATCHﺁﻥ ﺭﺍ ﺟﺪﺍ ﺳﺎﺯﻳﺪ.
lM
*ﻣﺎ ﺩﺭ ﺑﺮﺩ ﺁﻣﻮﺯﺷﻲ ﺑﻪ ﺩﻟﻴﻞ ﻧﺪﺍﺷﺘﻦ RAMﺧﺎﺭﺟﻲ ﻧﻴﺎﺯﻱ ﺑﻪ ﺩﻳﻤﺎﻟﺘﻲﭘﻠﻜﺲ ﻧﻤﻮﺩﻥ ﻧﺪﺍﺷﺘﻴﻢ،
o
ﺍﻟﺒﺘﻪ ﺑﺎﻳﺪ ﺗﻮﺟﻪ ﺩﺍﺷﺖ ﺍﻳﻦ ﭘﻮﺭﺕ ﻣﻲﺑﺎﻳﺴﺖ ﺑﺎ ﻣﻘﺎﻭﻣﺖﻫﺎﻱ ١٠ﻛﻴﻠﻮﺍﻫﻢ ﺑﻪ VCCﻣﺘﺼﻞ ﺷﻮﻧﺪ)
tr
PULL UPﺷﻮﻧﺪ(
n
o
ﭘﻮﺭﺕP0
w
r
.i
s
r
e
k
ﺗﺎ ﻛﻨﻮﻥ ٣٢ﭘﺎﻳﻪ ﺍﺯ ﻣﻴﻜﺮﻭ ﺭﺍ ﻛﻪ ﻣﺮﺑﻮﻁ ﺑﻪ ﭘﻮﺭﺕﻫﺎﻱ ﻣﻴﻜﺮﻭ ﻣﻲﺷﺪ ﺭﺍ ﻣﻮﺭﺩ ﺑﺮﺭﺳﻲ ﻗﺮﺍﺭ
a
ﺩﺍﺩﻳﻢ .ﺣﺎﻝ ﺑﻪ ﭘﺎﻳﻪﻫﺎﻱ ﺩﻳﮕﺮ ﻣﻲﭘﺮﺩﺍﺯﻳﻢ.
lM
ﭘﺎﻳﻪ :٩
o
ﺍﻳﻦ ﭘﺎﻳﻪ ﺑﺮﺍﻱ Resetﻛﺮﺩﻥ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﻣﻨﻈﻮﺭ ﺷﺪﻩ ﺍﺳﺖ ﺍﺯ ﺁﻧﺠﺎﻳﻲ ﻛﻪ ﻫﻴﭻ ﻣﻨﺒﻊ ﺗﻐﺬﻳﻪﺍﻱ
tr
ﻧﻤﻲﺗﻮﺍﻧﺪ ﺑﻪ ﺻﻮﺭﺕ ﺍﻳﺪﻩﺁﻝ ﻛﺎﺭ ﻛﻨﺪ ﻭ ﺑﻌﺪ ﺍﺯ ﺭﻭﺷﻦ ﻧﻤﻮﺩﻥ ﺯﻣﺎﻧﻲ ﻃﻮﻝ ﻛﺸﻴﺪﻩ ﺗﺎ ﺗﻐﺬﻳﻪ ﺭﮔﻮﻟﻪ ﺷﻮﺩ
n
o
ﻭ ﺗﺎﺯﻣﺎﻧﻲ ﻛﻪ ﺗﻐﺬﻳﻪ ﺛﺎﺑﺖ ﻧﺸﻮﺩ ﺗﻀﻤﻴﻨﻲ ﺩﺭ ﺻﺤﺖ ﺍﻧﺠﺎﻡ ﻛﺎﺭ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﻧﻴﺴﺖ .ﭘﺲ ﻣﻲﺗﻮﺍﻧﻴﻢ ﺑﺎ
.C
C1 = 10µF
R1 = 8.2 KΩ
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
r
.i
ﭘﺎﻳﻪﻫﺎﻯ ١٨ﻭ:١٩
s
ﺳﺮﻋﺖ CPUﺩﺭ ﺍﻧﺠﺎﻡ ﻛﺎﺭ ﻳﻜﻲ ﺍﺯ ﻣﻬﻤﺘﺮﻳﻦ ﻧﻜﺘﻪﻫﺎﻱ ﻳﻚ ﭘﺮﻭﮊﻩ ﺍﺳﺖ ﺣﺎﻝ ﺍﻳﻦ ﺳﺮﻋﺖ
r
e
ﭼﮕﻮﻧﻪ ﻭ ﺍﺯ ﻛﺠﺎ ﻣﺤﺎﺳﺒﻪ ﻣﻲﺷﻮﺩ؟
k
ﭘﺎﻳﻪﻫﺎﻱ ١٨ﻭ ١٩ﻛﻪ ﺩﺭ ﺷﻤﺎﺗﻴﻚ ﭘﺎﻳﻪﻫﺎ ﺑﻪ ﻧﺎﻡﻫﺎﻱ XTAL1 , XTAL2ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﺷﺪﻩﺍﻧﺪ
a
lM
1
ﺳﺮﻋﺖ ﻧﻮﺳﺎﻥ ﺳﺎﺯ ﻣﺘﺼﻞ ﺑﻪ ﭘﺎﻳﻪﻫﺎﻱ ﭘﺎﻳﻪﻫﺎﻱ CPU-Clockﻣﻲﺑﺎﺷﻨﺪ .ﺳﺮﻋﺖ CPUﻫﻤﻮﺍﺭﻩ
12
o
ﺣﺪﺍﻛﺜﺮ ﻓﺮﻛﺎﻧﺲ ﻧﻮﺳﺎﻥﺳﺎﺯ ﻛﻪ ﻣﻲﺗﻮﺍﻧﺪ ﺑﻪ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﻣﺘﺼﻞ ﺷﻮﺩ ﻛﺮﻳﺴﺘﺎﻝ 24MHz ﻧﮑﺘﻪ:
n
ﻣﻲﺑﺎﺷﺪ ﻛﻪ ﺩﺭ ﺍﻳﻦ ﺻﻮﺭﺕ ﺳﺮﻋﺖ CPUﺑﺮﺍﺑﺮ 2MHzﺍﺳﺖ .ﺍﻳﻦ ﺑﺪﻳﻦ ﻣﻌﻨﺎﺳﺖ ﻛﻪ CPUﻗﺎﺩﺭ
o
.C
ﺧﻮﺍﻫﺪ ﺑﻮﺩ ﺩﺭ ١ﺛﺎﻧﻴﻪ ﺩﻭ ﻣﻴﻠﻴﻮﻥ ﻭﺍﺣﺪ ﻛﺎﺭﻱ ﺭﺍ ﺍﻧﺠﺎﻡ ﺩﻫﺪ .ﺍﺯ ﺍﻳﻦ ﭘﺲ ﺑﻪ ﻫﺮ ﻭﺍﺣﺪ ﻛﺎﺭﻱ ﻳﻚ
w
ﺳﻴﻜﻞ ﻣﺎﺷﻴﻦ ﮔﻔﺘﻪ ﻣﻲﺷﻮﺩ .ﻻﺯﻡ ﺑﻪ ﺫﻛﺮ ﺍﺳﺖ ﺯﻣﺎﻥ ﻫﺮ ﺳﻴﻜﻞ ﺍﺯ ﻓﺮﻣﻮﻝ ﺯﻳﺮ ﻣﺤﺎﺳﺒﻪ ﻣﻲﺷﻮﺩ.
w
1s
ﺳﺮﻋﺖ ﻫﺮ ﺳﻴﻜﻞ ﻣﺎﺷﻴﻦ =
XTAL / 12
w
C 1 = C 2 = 30 pF ± % 10
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
ﺑﺎ ﻗﺮﺍﺭ ﺩﺍﺩﻥ ﻣﺘﻐﻴﺮﻫﺎ ﺩﺭ ﺍﻳﻦ ﻓﺮﻣﻮﻝ ﺩﺭﻣﻲﻳﺎﺑﻴﻢ ﻛﻪ ﺑﺎ ﻳﻚ ﻛﺮﻳﺴﺘﺎﻝ ٢٤ﻣﮕﺎﻫﺮﺗﺰ ﺳﺮﻋﺖ ﻫﺮ
r
.i
ﺍﺯ ﺍﻳﻦ ﺑﻪ ﺑﻌﺪ ﻛﺮﻳﺴﺘﺎﻝ ﺭﺍ ﺑﻪ ﺻﻮﺭﺕ ﻗﺮﺍﺭﺩﺍﺩﻱ ﻭ ﺑﺮ ﺍﺳﺎﺱ ﻛﺮﻳﺴﺘﺎﻝ ﺑﺮﺩ ﺁﻣﻮﺯﺷﻲ ١٢ ﻧﮑﺘﻪ:
s
ﻣﮕﺎﻫﺮﺗﺰ ﺩﺭ ﻧﻈﺮ ﻣﻲﮔﻴﺮﻳﻢ.
r
e
ﺗﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﮐﻪ ﻫﺮ دﺳﺘﻮری در ﯾﮏ ﺳﯿﮑﻞ ﻣﺎﺷﯿﻦ اﺟﺮا ﻧﻤﯽﺷﻮد و ﺑﺴﺘﻪ ﺑﻪ ﻧﻮع
k
a
دﺳﺘﻮر ،ﺗﻌﺪاد ﺳﯿﮑﻞ ﻣﺸﺨﺺ ﻣﯽﺷﻮد.
lM
ﭘﺎﻳﻪ :٢٩
o
ﺍﻳﻦ ﭘﺎﻳﻪ ﺟﻬﺖ ﺍﺗﺼﺎﻝ ﺑﻪ OEﺍﺯ EEPROMﺧﺎﺭﺟﻲ ﻣﻲﺑﺎﺷﺪ ﻭ ﺩﺭ ﺣﺎﻟﺖ ﻋﺎﺩﻱ ﺍﺳﺘﻔﺎﺩﻩ
tr
ﻧﻤﻲﺷﻮﺩ.
n
ﭘﺎﻳﻪ :٣٠
o
.C
:ALEﺍﻳﻦ ﭘﺎﻳﻪ ﺟﻬﺖ ﺩﻳﻤﺎﻟﺘﻲ ﭘﻠﻜﺲ ﻧﻤﻮﺩﻥ ﭘﻮﺭﺕ ﺻﻔﺮ ﺩﺭ ﻫﻨﮕﺎﻡ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ROMﻭ
w
ﭘﺎﻳﻪ :٣١
w
ﺑﺮﺍﻱ ﺩﺳﺘﺮﺳﻲ ﺑﻪ ﺣﺎﻓﻈﻪ ﺑﺮﻧﺎﻣﻪ ﺧﺎﺭﺟﻲ ﺍﺳﺖ ﻣﺎ ﺩﺭ 89C51ﻣﻌﻤﻮ ﹰﻻ ﺑﻪ ﻋﻠﺖ ﻭﺟﻮﺩ
EEPROMﺩﺍﺧﻠﻲ ﻧﻴﺎﺯﻱ ﺑﻪ ﺣﺎﻓﻈﻪ ﺧﺎﺭﺟﻲ ﻧﺪﺍﺭﻳﻢ ﭘﺲ ﺍﻳﻦ ﭘﺎﻳﻪ ﺩﺭ ﺣﺎﻟﺖ ﻋﺎﺩﻱ ﺑﻪ VCCﻣﺘﺼﻞ
ﺍﺳﺖ.
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
ﭘﺎﻳﻪﻫﺎﻯ ٢٠ﻭ:٤٠
ﺩﻭ ﭘﺎﻳﻪ ﻣﻬﻢ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﺍﺳﺖ ﻛﻪ ﺟﻬﺖ ﺍﺗﺼﺎﻝ ﺑﻪ VCC,GNDﻣﻲﺗﻮﺍﻥ ﻃﺒﻖ ﭘﻴﻮﺳﺖ ﺍﺯ
r
ﺁﻥﻫﺎ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ.
.i
s
ﺧﺼﻮﺻﻴﺎﺕ ﻣﻴﮑﺮﻭﮐﻨﺘﺮﻟﺮﻫﺎﻯ ٨٠٥١ﻭ :٨٠٥٢
r
ﺩﺭ ﺟﺪﻭﻝ ﺯﻳﺮ ﺍﻳﻦ ﺩﻭ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﺍﺯ ﻧﻈﺮ ﺣﺎﻓﻈﻪ ﺑﺎ ﻳﻜﺪﻳﮕﺮ ﻣﻘﺎﻳﺴﻪ ﺷﺪﻩﺍﻧﺪ.
e
k
ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﺣﺎﻓﻈﻪROM ROMﺩﺍﺧﻠﻲ ROMﺧﺎﺭﺟﻲ ﺗﻌﺪﺍﺩ ﺗﺎﻳﻤﺮ
a
8051 128ﺑﺎﻳﺖ 4Kﺑﺎﻳﺖ 64Kﺑﺎﻳﺖ 2
lM
ﻧﮑﺘﻪ :ﺩﺭﻗﺴﻤﺖ ROMﺧﺎﺭﺟﻲ ﻣﻨﻈﻮﺭ ﻗﺎﺑﻠﻴﺖ ﭘﺸﺘﻴﺒﺎﻧﻲ ﺍﺯ ﺍﻳﻦ ﻣﻘﺪﺍﺭ ﺣﺎﻓﻈﻪ ﺧﺎﺭﺟﻲ ﺍﺳﺖ.
n
ﺑﺎﻳﺖ ﺑﺎﻳﺖ
7F FF
F0 F7 F6 F5 F4 F3 F2 F1 F0 B
r
.i
ﺣﺎﻓﻈﻪ RAMﻫﻤﻪ ﻣﻨﻈﻮﺭﻩ E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC
s
r
D0 D7 D6 D5 D4 D3 D2 D1 D0 PSW
e
30 B8 ---- ---- ---- BC BB BA B9 B8 IP
k
2F 7F 7E 7D 7C 7B 7A 79 78
a
2E 77 76 75 74 73 72 71 70 B0 B7 B6 B5 B4 B3 B2 B1 B0 P3
lM
2D 6F 6E 6D 6C 6B 6A 69 68
2C 67 66 65 64 63 62 61 60 A8 AF ---- ---- AC AB AA A9 A8 IE
2B 5F 5E 5D 5C 5B 5A 59 58
o
2A 57 56 55 54 53 52 51 50 A0 A7 A6 A5 A4 A3 A2 A1 A0 P2
tr
28 47 46 45 44 43 42 41 40 ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ SBUF
n
27 3F 3E 3D 3C 3B 3A 39 38 98 9F 9E 9D 9C 9B 9A 99 98 SCON
o
25 2F 2E 2D 2C 2B 2A 29 28 90 97 96 95 94 93 92 91 90 P1
24 27 26 25 24 23 22 21 20
w
23 1F 1E 1D 1C 1B 1A 19 18 8D ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ TH1
22 17 16 15 14 13 12 11 10 8C ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ TH0
w
21 0F 0E 0D 0C 0B 0A 09 08 8B ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ TL1
w
20 07 06 05 04 03 02 01 00 8A ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ TL0
r
07 81 ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ SP
R0-R7ﺑﺎﻧﻚ ﻗﺮﺍﺭﺩﺍﺩﻱ ﺛﺒﺎﺕ ﺑﺮﺍﻱ
.i
00 80 87 86 85 84 83 82 81 80 P0
s
ﺛﺒﺎﺗﻬﺎﻱ ﻭﻳﮋﻩ
r
ﺧﻼﺻﻪ ﺣﺎﻓﻈﻪ ﺩﺭﻭﻥ ﺗﺮﺍﺷﻪ ٨٠٥١
e
k
ﺗﻮﺟﻪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ ﺧﺎﻧﻪ ﻫﺎﻱ ﺣﺎﻓﻈﻪ ﺍﺯ ﻧﻈﺮ ﻧﻮﻉ ﺩﺳﺘﺮﺳﻲ ﺑﻪ ٢ﺩﺳﺘﻪ ﺩﺳﺘﺮﺳﻲ ﺑﻴﺘﻲ ﻭ
a
lM
ﺩﺳﺘﺮﺳﻲ ﺑﺎﻳﺘﻲ ﺗﻘﺴﻴﻢ ﻣﻲﺷﻮﻧﺪ .ﺗﻤﺎﻡ ﺑﺎﻳﺖﻫﺎﻱ ﺣﺎﻓﻈﻪ ﺑﻪ ﺻﻮﺭﺕ ﺑﻴﺘﻲ ﻗﺎﺑﻞ ﺩﺳﺘﺮﺳﻲ ﻧﻴﺴﺘﻨﺪ ﺑﻪ
ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﺑﺎﻳﺘﻲ ﺑﻪ ﻧﺎﻡ P1ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﻣﻲﺗﻮﺍﻧﻴﻢ ﺑﮕﻮﻳﻴﻢ ﺑﻴﺖ ﺻﻔﺮﻡ ﺑﺎﻳﺖ .(P1.0)P1ﺍﻣﺎ
o
tr
ﻧﻤﻲﺗﻮﺍﻧﻴﻢ ﺑﮕﻮﻳﻴﻢ ﺑﻴﺖ ﺻﻔﺮﻡ ﺑﺎﻳﺖ TMODﺯﻳﺮﺍ TMODﻳﻚ ﺑﺎﻳﺖ ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ
n
ﺷﻤﺎ ﻣﻲﺗﻮﺍﻧﻴﺪ ﺩﺭ ﺟﺪﻭﻝ ﺧﺎﻧﻪﻫﺎﻱ ﺣﺎﻓﻈﻪ ﻟﻴﺴﺖ ﻛﺎﻣﻠﻲ ﺍﺯ ﺑﺎﻳﺖﻫﺎﻱ ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﺭﺍ ﻣﺸﺎﻫﺪﻩ
o
ﻧﻤﺎﻳﻴﺪ .ﺍﻟﺒﺘﻪ ﺑﻪ ﺍﻳﻦ ﻧﻜﺘﻪ ﺗﻮﺟﻪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ ﻛﻪ ﺍﺯ ﺑﺎﻳﺖﻫﺎﻱ ﺑﻴﺖ ﺁﺩﺭﺱﭘﺬﻳﺮ ﻣﻲﺗﻮﺍﻥ ﺑﺮﺍﻱ ﻛﺎﺭﻫﺎﻱ
.C
ﺑﺎﻧﮏﻫﺎﻯ ﺛﺒﺎﺕ:
w
.
ﺍﺯ ﺁﺩﺭﺱ 00Hﺗﺎ 1F Hﺣﺎﻓﻈﻪ ﺑﻪ ﺍﻳﻦ ﺑﺎﻧﻚﻫﺎ ﺍﺧﺘﺼﺎﺹ ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ ﻛﻪ ﺩﺭ ﻣﺠﻤﻮﻉ ۴
w
ﺑﺎﻧﻚ ﺑﻪ ﺍﺳﺎﻣﻲ )ﺑﺎﻧﻚ ﺻﻔﺮ ،ﺑﺎﻧﻚ ﻳﻚ ،ﺑﺎﻧﻚ ﺩﻭ ،ﺑﺎﻧﻚ ﺳﻪ (،ﻭﺟﻮﺩ ﺩﺍﺭﺩ .ﻫﺮ ﻛﺪﺍﻡ ﺍﺯ ﺍﻳﻦ ﺑﺎﻧﻚﻫﺎ ﺍﺯ
ﻫﺸﺖ ﺑﺎﻳﺖ ﺗﺸﻜﻴﻞ ﺷﺪﻩ ﺍﺳﺖ ﻛﻪ ﺑﻪ ﺍﺳﺎﻣﻲ R0ﺗﺎ R7ﻧﺎﻣﮕﺬﺍﺭﻱ ﺷﺪﻩﺍﻧﺪ .ﻭ ﻣﺎ ﻣﻲﺗﻮﺍﻧﻴﻢ ﺑﻪ ﺩﻟﺨﻮﺍﻩ
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
ﻫﺮ ﻛﺪﺍﻡ ﺍﺯ ﺍﻳﻦ ﺑﺎﻧﻚﻫﺎ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻛﻨﻴﻢ .ﺍﻣﻜﺎﻥ ﺩﺳﺘﺮﺳﻲ ﺑﻪ ﺍﻳﻦ ﺑﺎﻧﻚﻫﺎ ﺑﻪ ﺻﻮﺭﺕ ﺑﺎﻳﺘﻲ ﺍﺳﺖ ﻭ ﺑﻴﺖ
ﺁﺩﺭﺱﭘﺬﻳﺮ ﻧﻴﺴﺖ.
r
.i
ﺷﺎﻳﺪ ﺍﺯ ﺧﻮﺩ ﺳﻮﺍﻝ ﻛﻨﻴﺪ ﻛﻪ ﺩﺳﺘﺮﺳﻲ ﺑﺎﻳﺘﻲ ﺑﻪ ﭼﻪ ﻣﻌﻨﺎﺳﺖ .ﺩﺳﺘﺮﺳﻲ ﺑﺎﻳﺘﻲ ﻳﻌﻨﻲ ﺍﻳﻨﻜﻪ ﺑﺮﺍﻱ
s
ﺍﻧﺘﻘﺎﻝ ﺍﻃﻼﻋﺎﺕ ﺑﻪ ﺍﻳﻦ ﺛﺒﺎﺕﻫﺎ ﺑﺎﻳﺪ ﺍﺯ ﺩﺳﺘﻮﺭﺍﺕ ﺑﺎﻳﺘﻲ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ .ﻭ ﺍﺯ ﺩﺳﺘﻮﺭﺍﺕ ﺑﻴﺘﻲ ﺑﺮﺍﻱ ﺗﺤﺖ
r
e
ﺗﺎﺛﻴﺮ ﻗﺮﺍﺭ ﺩﺍﺩﻥ ﺗﻨﻬﺎ ﻳﻚ ﺑﻴﺖ ﻣﻲﺗﻮﺍﻥ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ .ﺑﻪ ﺑﻴﺎﻥ ﺳﺎﺩﻩﺗﺮ ﻧﻤﻲﺗﻮﺍﻧﻴﻢ ﻣﺴﺘﻘﻴﻤﹰﺎ ﻳﻚ ﺑﻴﺖ ﺍﺯ
k
a
ﻳﻚ ﺑﺎﻳﺖ ﺭﺍ ﺗﻐﻴﻴﺮ ﺩﻫﻴﻢ ﻭ ﺑﺮﺍﻱ ﺗﻐﻴﻴﺮ ﻳﻚ ﺑﻴﺖ ﺑﺎﻳﺪ ﻛﻞ ﻳﻚ ﺑﺎﻳﺖ ﺭﺍ ﺗﺤﺖ ﺗﺎﺛﻴﺮ ﻗﺮﺍﺭ ﺩﻫﻴﻢ.
lM
ﺩﺳﺘﻮﺭﺍﺗﻲ ﻛﻪ ﺍﺯ ﺍﻳﻦ ﺛﺒﺎﺕﻫﺎ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻛﻨﻨﺪ ﺍﺯ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞﻫﺎﻳﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﺑﺎ ﺑﻘﻴﻪ ﺭﻭﺵﻫﺎﻱ
ﺁﺩﺭﺱﺩﻫﻲ ﻛﺎﺭ ﻣﻲﻛﻨﻨﺪ ،ﺳﺮﻳﻌﺘﺮ ﻭ ﻛﻮﺗﺎﻩﺗﺮ ﻫﺴﺘﻨﺪ ﭘﺲ ﺑﻬﺘﺮ ﺍﺳﺖ ﺑﺮﺍﻱ ﺩﺍﺩﻩﻫﺎﻳﻲ ﻛﻪ ﺑﻴﺸﺘﺮ ﺑﻪﻛﺎﺭ ﺑﺮﺩﻩ
o
tr
RAMﺑﻴﺖ ﺁﺩﺭﺱﭘﺬﻳﺮ:
.C
ﺍﺯ ﺁﺩﺭﺱ 20Hﺗﺎ 2FHﺛﺒﺎﺕﻫﺎﻳﻲ ﻗﺮﺍﺭ ﺩﺍﺭﻧﺪ ﻛﻪ ﺩﺳﺘﺮﺳﻲ ﺑﻪ ﺁﻥﻫﺎ ﺑﻪ ﺻﻮﺭﺕ ﺑﻴﺘﻲ ﺍﻧﺠﺎﻡ
w
ﻣﻲﺷﻮﺩ ﻳﻌﻨﻲ ﺍﻳﻨﻜﻪ ﺩﺭ ﺍﻳﻦ ﺛﺒﺎﺕﻫﺎ ﻋﻼﻭﻩ ﺑﺮ ﺍﻳﻨﻜﻪ ﻣﻲﺗﻮﺍﻧﻴﻢ ﺑﻪ ﺍﻳﻦ ﺁﺩﺭﺱﻫﺎ ﺑﻪ ﺻﻮﺭﺕ ﺑﺎﻳﺘﻲ ﺩﻳﺘﺎ
w
ﻼ
ﺍﻧﺘﻘﺎﻝ ﺩﻫﻴﻢ ﺑﻪ ﺻﻮﺭﺕ ﺑﻴﺘﻲ ﻧﻴﺰ ﺍﻳﻦ ﺍﻣﺮ ﺍﻣﻜﺎﻥﭘﺬﻳﺮ ﺍﺳﺖ ﻭ ﻣﺎ ﻣﻲﺗﻮﺍﻧﻴﻢ ﻳﻚ ﺑﻴﺖ ﺍﺯ ﻳﻚ ﺑﺎﻳﺖ ﺭﺍ ﻣﺜ ﹰ
w
ﺻﻔﺮ ﻳﺎ ﻳﻚ ﻛﻨﻴﻢ.
ﺣﺎﻓﻈﻪRAMﻫﻤﻪ ﻣﻨﻈﻮﺭﻩ:
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
ﺍﺯ ﺁﺩﺭﺱ 30Hﺗﺎ 2FHﺛﺒﺎﺕﻫﺎﻳﻲ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﺩﺳﺘﺮﺳﻲ ﺑﻪ ﺁﻥﻫﺎ ﺑﻪ ﺻﻮﺭﺕ ﺑﺎﻳﺘﻲ ﺍﺳﺖ.
ﻭﺗﻨﻬﺎ ﻓﺮﻗﺸﺎﻥ ﺑﺎ ﺑﻴﺖ ﺁﺩﺭﺱﭘﺬﻳﺮ ﺩﺭ ﻧﺤﻮﻩ ﺩﺳﺘﺮﺳﻲ ﺑﻪ ﺛﺒﺎﺕ ﺍﺳﺖ .ﻛﻪ ﺩﺭ ﺑﻴﺖ ﺁﺩﺭﺱﭘﺬﻳﺮ ﺑﻪ ﺻﻮﺭﺕ
r
.i
ﺑﻴﺘﻲ ﻭﺩﺭ ﺛﺒﺎﺕﻫﺎﻱ ﻫﻤﻪ ﻣﻨﻈﻮﺭﻩ ﺑﻪﺻﻮﺭﺕ ﺑﺎﻳﺘﻲ ﺍﺳﺖ.
s
r
ﺛﺒﺎﺕﻫﺎﻯ ﻭﻳﮋﻩ:
e
ﺍﺯ ﺁﺩﺭﺱ 80Hﺗﺎ FFHﻣﺨﺼﻮﺹ ﺛﺒﺎﺕﻫﺎﻱ ﻭﻳﮋﻩﺍﻱ ﺍﺳﺖ ﻛﻪ ﻫﺮ ﻛﺪﺍﻡ ﺍﺯ ﺍﻳﻦﻫﺎ ﺑﺮﺍﻱ ﻛﺎﺭ
k
a
ﺧﺎﺻﻲ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪﻩﺍﻧﺪ ﻛﻪ ﺍﺭﺗﺒﺎﻁ CPUﺑﺎ ﺑﻘﻴﻪ ﻗﺴﻤﺖﻫﺎﻱ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﺍﺯ ﻃﺮﻳﻖ ﺍﻳﻦ ﺛﺒﺎﺕﻫﺎ
lM
ﺍﻧﺠﺎﻡ ﻣﻲﭘﺬﻳﺮﺩ ،ﻛﻪ ﺩﺭ ﺩﺭﺱﻫﺎﻱ ﺁﻳﻨﺪﻩ ﺑﻪ ﺗﻤﺎﻣﻲ ﺁﻥﻫﺎ ﺧﻮﺍﻫﻴﻢ ﭘﺮﺩﺍﺧﺖ.
o
ﻣﻲﺷﻮﻧﺪ:
.C
ﺗﻔﺎﻭﺕ ﺍﻳﻦ ﺩﻭ ﻧﻮﻉ ﺩﺳﺘﻮﺭ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﺩﺳﺘﻮﺭﻫﺎﻱ Assemblerﺩﺭ ﻫﻨﮕﺎﻡ ﻛﺎﻣﭙﺎﻳﻞ ﺷﺪﻥ ﺍﺟﺮﺍ
w
ﻣﻲﺷﻮﻧﺪ ﻭ ﺑﺮﺍﻱ ﺭﺳﺎﻧﺪﻥ ﻣﻔﻬﻮﻣﻲ ﺑﻪ ﺍﺳﻤﺒﻠﺮ ﺍﺳﺖ ﻭﻟﻲ ﺩﺳﺘﻮﺭﻫﺎﻱ ﻧﻮﻉ ﺍﻭﻝ ﺩﺭ ﺩﺍﺧﻞ ﻣﻴﻜﺮﻭ ﺍﺟﺮﺍ
ﻣﻲﺷﻮﻧﺪ.
ﺷﺮﻭﻉ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻰ:
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
ﺍﮔﺮ ﺗﺎﻛﻨﻮﻥ ﺑﺎ ﺯﺑﺎﻥﻫﺎﻱ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﻣﺨﺘﻠﻒ ﻛﺎﺭ ﻛﺮﺩﻩ ﺑﺎﺷﻴﺪ ﻣﺸﺎﻫﺪﻩ ﻛﺮﺩﻩﺍﻳﺪ ﻛﻪ ﺗﻤﺎﻣﻲ ﺁﻥﻫﺎ
ﻣﺤﻴﻂ ﻣﺨﺼﻮﺹ ﺑﻪ ﺧﻮﺩ ﺭﺍ ﺩﺍﺭﺍ ﻣﻲﺑﺎﺷﻨﺪ ﻭﻟﻴﻜﻦ ﺧﺼﻮﺻﻴﺖ ﺯﺑﺎﻥ Assemblyﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﺗﻨﻬﺎ ﻧﻴﺎﺯ
r
.i
ﺑﻪ ﻣﺤﻴﻄﻲ ﺩﺍﺭﺩ ﻛﻪ ﺍﺻﻄﻼﺣﹰﺎ ﻗﺎﺑﻠﻴﺖ ) (Text Editorﺭﺍ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ.
s
ﺍﮔﺮ ﻣﺤﻴﻂ ﻛﺎﺭ ﺷﻤﺎ ﻭﻳﻨﺪﻭﺯ ﺑﺎﺷﺪ ﻣﻲﺗﻮﺍﻧﻴﺪ ﺑﺎ ﺍﺟﺮﺍ ﻧﻤﻮﺩﻥ ﻧﺮﻡﺍﻓﺰﺍﺭ NOTE PADﻭ ﭼﻨﺎﻧﭽﻪ
r
e
ﺩﺭ ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ Dosﻛﺎﺭ ﻣﻲﻛﻨﻴﺪ ﻣﻲﺗﻮﺍﻧﻴﺪ ﺑﺎ ﺍﺟﺮﺍﻱ ﻧﺮﻡﺍﻓﺰﺍﺭ Edit.exeﻣﺤﻴﻂ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﺧﻮﺩ ﺭﺍ
k
a
ﻓﻌﺎﻝ ﻧﻤﺎﻳﻴﺪ.
lM
ﻫﻢﺍﻛﻨﻮﻥ ﺷﻤﺎ ﻣﻲﺗﻮﺍﻧﻴﺪ ﺩﺳﺘﻮﺭﺍﺕ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﺭﺍ ﺩﺭ ﺍﻳﻦ ﻣﺤﻴﻂ ﺗﺎﻳﭗ ﻧﻤﺎﻳﻴﺪ.
ORG
o
ﺩﺳﺘﻮﺭ ﻓﻮﻕ ﻛﻪ ﻣﺮﺑﻮﻁ ﺑﻪ Assemblerﻣﻲﺑﺎﺷﺪ ﺑﻪ ﺷﻤﺎ ﺍﻣﻜﺎﻥ ﻣﻲﺩﻫﺪ ،ﺁﺩﺭﺱ ﺷﺮﻭﻉ ﺑﺮﻧﺎﻣﻪ ﺩﺭ
tr
ﻣﺜﺎل:
ORG 0H
w
MOV
w
ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺑﺮﺍﻱ ﻛﭙﻲ ﻛﺮﺩﻥ ﻳﻚ ﺧﺎﻧﻪ ﺍﺯ ﺣﺎﻓﻈﻪ ﻳﺎ ﺩﺍﺩﻩﻫﺎ ﺩﺭ ﺑﺎﻳﺖﻫﺎﻱ ﺣﺎﻓﻈﻪ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﺷﻮﺩ .ﺗﻮﺟﻪ
ﻣﺜﺎل :1
MOV P1,#55H
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﻣﻘﺪﺍﺭ ﻋﺪﺩﻱ ٥٥ﺩﺭ ﻣﺒﻨﺎﻱ ﺷﺎﻧﺰﺩﻩ ﺭﺍ ﺩﺭ ﺑﺎﻳﺘﻲ ﺍﺯ ﺣﺎﻓﻈﻪ ﺑﻪ ﻧﺎﻡ P1ﻣﻲﺭﻳﺰﺩ.
MOV P1,#85D
r
ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﻣﻘﺪﺍﺭ ﻋﺪﺩﻱ ٨٥ﺩﺭ ﻣﺒﻨﺎﻱ ﺩﻩ ﺭﺍ ﺩﺭ ﺑﺎﻳﺘﻲ ﺍﺯ ﺣﺎﻓﻈﻪ ﺑﻪ ﻧﺎﻡ P1ﻣﻲﺭﻳﺰﺩ.
.i
s
MOV P1,#01010011B
r
ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﻣﻘﺪﺍﺭ ﻋﺪﺩﻱ ٠١٠١٠٠١١ﺩﺭ ﻣﺒﻨﺎﻱ ﺩﻭ ﺭﺍ ﺩﺭ ﺑﺎﻳﺘﻲ ﺍﺯ ﺣﺎﻓﻈﻪ ﺑﻪ ﻧﺎﻡ P1ﻣﻲﺭﻳﺰﺩ.
e
k
ﺗﻮﺟﻪ :ﻫﻤﺎﻥﻃﻮﺭ ﻛﻪ ﺩﺭ ﺩﺳﺘﻮﺭﺍﺕ ﺑﺎﻻ ﻣﺸﺎﻫﺪﻩ ﻧﻤﻮﺩﻳﺪ ﻋﻼﻣﺖ #ﻗﺒﻞ ﺍﺯ ﻫﺮ ﻛﺪﺍﻡ ﺍﺯ ﺍﻋﺪﺍﺩ ﻗﻴﺪ
a
lM
ﺷﺪﻩ ﺑﻮﺩ .ﺍﻳﻦ ﻋﻼﻣﺖ ﺑﺮﺍﻱ ﻣﺸﺨﺺ ﻧﻤﻮﺩﻥ ﺍﻳﻦ ﻣﻔﻬﻮﻡ ﺍﺳﺖ ﻛﻪ ﻣﻘﺪﺍﺭ ﻋﺪﺩﻱ ﻋﺒﺎﺭﺕ ﺑﻌﺪﻱ
ﻣﺜﺎل :2
tr
MOV P1,55H
n
ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﻣﺤﺘﻮﻳﺎﺕ ﺩﺍﺧﻞ ﺑﺎﻳﺖ 55Hﺣﺎﻓﻈﻪ ﺭﺍ ﺩﺭ ﺧﺎﻧﻪ P1ﺣﺎﻓﻈﻪ ﻣﻲﺭﻳﺰﺩ .ﺩﻗﺖ ﻛﻨﻴﺪ ﻛﻪ ﺗﻤﺎﻡ
o
ﻣﺜﺎل :3
w
MOV A,P1
MOV P2,A
w
ﺩﺭ ﻣﺜﺎﻝ ﺑﺎﻻ ﺍﮔﺮ ﺑﺨﻮﺍﻫﻴﻢ ﺍﻃﻼﻋﺎﺕ ﺭﻭﻱ P1ﺭﺍ ﺭﻭﻱ P2ﺑﺮﻳﺰﻳﻢ ﺍﺑﺘﺪﺍ ﺑﺎﻳﺪ ﺩﻳﺘﺎ ﺭﺍ ﺑﻪ
w
ﻋﺒﺎﺭﺍﺕ B,D,Hﻛﻪ ﺑﻌﺪ ﺍﺯ ﻣﻘﺪﺍﺭﻫﺎﻱ ﻋﺪﺩﻱ ﻗﻴﺪ ﺷﺪﻩ ﺁﻣﺪﻩ ﺍﺳﺖ ﻣﺒﻴﻦ ﻣﺒﻨﺎﻱ ﻋﺪﺩ ﻣﻲﺑﺎﺷﺪ.
EQU
r
ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﻣﺮﺑﻮﻁ ﺑﻪ ﺍﺳﻤﺒﻠﺮ ﺑﻮﺩﻩ ﻭ ﺟﻬﺖ ﻧﺎﻣﮕﺬﺍﺭﻱ ﻗﺴﻤﺘﻲ ﺍﺯ ﺣﺎﻓﻈﻪ ﺩﺍﺧﻠﻲ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ
.i
s
ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﺷﻮﺩ.
r
ﻣﺜﺎل :4ﺑﺮﻧﺎﻣﻪ ﺯﻳﺮ ﺧﺎﻧﻪ 20Hﺍﺯ ﺣﺎﻓﻈﻪ ﺭﺍ ﺑﻪ MEMORYﻧﺎﻣﮕﺬﺍﺭﻱ ﻣﻲﻛﻨﺪ.
e
k
MEMORY EQU 20H
a
ﺍﻳﺠﺎﺩ ﺣﻠﻘﻪﻫﺎ ﺩﺭ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻰ ﻣﻴﮑﺮﻭﮐﻨﺘﺮﻟﺮ:
lM
JMP
ﻼ
ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺑﺮﺍﻱ ﭘﺮﺵ ﺑﻪ ﻣﻜﺎﻧﻲ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﺷﻮﺩ ﻛﻪ ﺍﻳﻦ ﻣﻜﺎﻥ ﻳﻚ ﺑﺮﭼﺴﺐ ﺍﺳﺖ ﻛﻪ ﻗﺒ ﹰ
o
tr
ﻧﺎﻣﮕﺬﺍﺭﻱ ﺷﺪﻩ ﺍﺳﺖ ﺩﻗﺖ ﻛﻨﻴﺪ ﻛﻪ ﺑﺮﺍﻱ ﭘﺮﺵﻫﺎﻱ ﻛﻮﺗﺎﻩ ﻣﻲﺗﻮﺍﻥ ﺍﺯ ﺩﺳﺘﻮﺭ LJMPﻭ ﺑﺮﺍﻱ ﭘﺮﺵﻫﺎﻱ
n
ﻣﺜﺎل :5
LOOP:
.
r
.i
.
s
.
r
JMP LOOP
e
k
ﺩﺳﺘﻮﺭ ﻓﻮﻕ ﺑﻪ ﻣﻜﺎﻧﻲ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﻧﺎﻡ LOOPﭘﺮﺵ ﻣﻲﻛﻨﺪ.
a
lM
LOOP:JMP LOOP
ﺍﻳﻦ ﺧﻂ ﺑﺮﻧﺎﻣﻪ ﺑﺎﻋﺚ ﻣﻲﺷﻮﺩ CPUﺩﺭ ﻳﻚ ﺣﻠﻘﻪ ﮔﻴﺮ ﻛﻨﺪ .ﺍﻟﺒﺘﻪ ﻣﻲﺗﻮﺍﻥ ﺑﻪ ﺟﺎﻱ ﺑﺮﻧﺎﻣﻪ ﻓﻮﻕ ﺍﺯ
o
END
o
.C
ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﻣﺮﺑﻮﻁ ﺑﻪ ASSEMBLERﺍﺳﺖ ﻛﻪ ﻧﺸﺎﻥ ﺩﻫﻨﺪﻩ ﭘﺎﻳﺎﻥ ﺑﺮﻧﺎﻣﻪ ﻭ ﺧﺮﻭﺝ ﺍﺯ ﺁﻥ
ﺍﺳﺖ .ﻻﺯﻡ ﺑﻪ ﺫﻛﺮ ﺍﺳﺖ ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﻣﻲﺑﺎﻳﺴﺖ ﻫﻤﻴﺸﻪ ﺁﺧﺮﻳﻦ ﺧﻂ ﺑﺮﻧﺎﻣﻪ ﺑﺎﺷﺪ.
w
ﻧﮑﺘﻪ :ﺷﻤﺎ ﺑﺎﻳﺪ ﺑﻪ ﮔﻮﻧﻪﺍﻱ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﻧﻤﺎﻳﻴﺪ ﻛﻪ ﻫﻴﭽﮕﺎﻩ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﺩﺳﺘﻮﺭ ENDﻧﺮﺳﺪ.
w
w
ORG 0
MOV P1,#55H
LOOP: JMP LOOP
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
END
ﺑﺎ ﭘﺮﻭﮔﺮﺍﻡ ﻧﻤﻮﺩﻥ ICﻭ ﻗﺮﺍﺭﺩﺍﺩﻥ ﺁﻥ ﺑﺮ ﺭﻭﻱ ﺑﺮﺩ ﺁﻣﻮﺯﺷﻲ ﺍﻳﻦ ﺑﺮﻧﺎﻣﻪ ﺑﺎﻋﺚ ﻣﻲﺷﻮﺩ ﻛﻪ LEDﻫﺎﻱ
r
ﺭﻭﻱ ﺑﺮﺩ ﺑﻪ ﺻﻮﺭﺕ ﻳﻚ ﺩﺭﻣﻴﺎﻥ ﺭﻭﺷﻦ ﺷﻮﻧﺪ .ﭼﺮﺍ؟
.i
s
ﺣﺎﻝ ﺑﻪ ﺗﺤﻠﻴﻞ ﺑﺮﻧﺎﻣﻪ ﻭ ﻧﺤﻮﻩ ﮐﺎﺭ ﺁﻥ ﻣﻰﭘﺮﺩﺍﺯﻳﻢ:
r
e
ﺍﻭﻟﻴﻦ ﺩﺳﺘﻮﺭ ﻛﻪ ﻧﻤﺎﻳﺎﻥﮔﺮ ﺧﺎﻧﻪ ﺷﺮﻭﻉ ﺑﺮﻧﺎﻣﻪ ﺍﺳﺖ .ﻫﻤﺎﻥﻃﻮﺭ ﻛﻪ ﺩﺭ ﻣﺒﺎﺣﺚ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ
k
89C51ﻣﻄﺎﻟﻌﻪ ﻧﻤﻮﺩﻩﺍﻳﺪ P1 ،ﺩﻗﻴﻘﹰﺎ ﻳﻚ ﺑﺎﻳﺖ ﺍﺯ ﺣﺎﻓﻈﻪ RAMﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﻣﻲﺑﺎﺷﺪ ﻛﻪ ﺑﻪ ﺍﺯﺍﻱ ﻫﺮ
a
lM
ﺑﻴﺖ ﺧﻮﺩ ﻳﻚ ﭘﺎﻳﻪ I/Oﺑﺮ ﺭﻭﻱ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻟﺮ ﺩﺍﺭﺩ )ﭘﺎﻳﻪ ١ﺗﺎ .(٨ﺣﺎﻝ ﺍﮔﺮ ﻫﺮ ﺑﻴﺖ ﺍﺯ ﺍﻳﻦ ﺣﺎﻓﻈﻪ ﻳﻚ
ﺷﻮﺩ ﺷﻤﺎ ﺭﻭﻱ ﭘﺎﻳﻪ ﻧﻈﻴﺮ ﺁﻥ +5Vﻭ ﭼﻨﺎﻧﭽﻪ ﺻﻔﺮ ﺷﻮﺩ ﺷﻤﺎ ﺭﻭﻱ ﭘﺎﻳﻪ ﻧﻈﻴﺮ ﻫﺮ ﺑﻴﺖ ﻣﻘﺪﺍﺭ ﺻﻔﺮ ﻳﺎ
o
ﺣﺎﻝ ﻋﺪﺩ 55Hﺭﺍ ﺑﻪ ﺑﺎﻳﻨﺮﻱ ﺗﺒﺪﻳﻞ ﻧﻤﺎﻳﻴﺪ ﻭ ﺩﺭ ﺑﻴﺖﻫﺎﻱ ﻧﻈﻴﺮ ﺣﺎﻓﻈﻪ ﻗﺮﺍﺭﺩﻫﻴﺪ.
n
o
ﻧﮑﺘﻪ :ﺍﻟﺒﺘﻪ ﺗﻮﺟﻪ ﻧﻤﺎﻳﻴﺪ LEDﻫﺎﻱ ﺭﻭﻱ ﺑﺮﺩ ﺁﻣﻮﺯﺷﻲ ﺑﻪ ﺻﻮﺭﺕ ﺁﻧﺪ ﻣﺸﺘﺮﻙ ﺑﺴﺘﻪ ﺷﺪﻩﺍﻧﺪ ﺩﺭ
w
ﺗﻌﺮﻳﻒ ﺷﺪﻩ ﺍﺳﺖ ﺭﺍ ﻳﻚ ﻭﺍﺣﺪ ﻛﺎﻫﺶ ﻣﻲﺩﻫﺪ ﻭ ﺍﮔﺮ ﻣﻘﺪﺍﺭ ﺁﻥ ﺧﺎﻧﻪ ﺻﻔﺮ ﻧﺒﻮﺩ ﺑﻪ ﺁﺩﺭﺳﻲ ﺍﺯ ﺧﺎﻧﻪ
r
.i
ﺣﺎﻓﻈﻪ ﺑﻪ ﻧﺎﻡ LOOPﭘﺮﺵ ﻣﻲﻛﻨﺪ.
s
r
e
k
a
lM
o
tr
n
o
.C
w
w
w
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
ﺩﺭ ﻣﺜﺎﻝ ﺯﻳﺮ ﺑﺎ ﺍﻳﺠﺎﺩ ﻳﻚ ﺗﺎﺧﻴﺮ ﺯﻣﺎﻧﻲ ﺩﻭ ﻣﻘﺪﺍﺭ ﻣﺨﺘﻠﻒ ﺭﺍ ﺑﺮ ﺭﻭﻱ ﭘﻮﺭﺕ ﻳﻚ ﺑﺎ ﻓﺎﺻﻠﻪ
r
.i
ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ):(٢
s
COUNT EQU 30H
r
e
ORG 00H
MAIN:
k
MOV COUNT,#200
a
MOV P1,#01010101B
lM
MOV P1,#10101010B
tr
MOV COUNT,#250
n
LOOP1:DJNZ COUNT,LOOP
o
JMP MAIN
.C
ﺑﺎﺭﮔﺬﺍﺭﻱ ﻣﻲﻛﻨﺪ ﻭ ﺑﻌﺪ ﺍﺯ 501µsﺩﻭﺑﺎﺭﻩ ﭘﻮﺭﺕ ﻳﻚ ﺭﺍ ﺑﺎ 55Hﺑﺎﺭﮔﺬﺍﺭﻱ ﻣﻲﻛﻨﺪ ﻭ ﻫﻤﻴﻦ ﻛﺎﺭ ﺍﺩﺍﻣﻪ
w
w
ﺧﻮﺍﻫﺪ ﺩﺍﺷﺖ .ﺷﺎﻳﺪ ﺍﺯ ﺧﻮﺩ ﺑﭙﺮﺳﻴﺪ ﭼﮕﻮﻧﻪ ﻣﺘﻮﺟﻪ ﻣﻲﺷﻮﻳﻢ ﻣﻘﺪﺍﺭ ﭘﻮﺭﺕﻫﺎ ،ﺑﻌﺪ ﺍﺯ ﮔﺬﺷﺖ ﭼﻪ
w
ﺧﻴﻠﻲ ﺳﺎﺩﻩ ﺍﺳﺖ ﺍﻧﺠﺎﻡ ﻫﺮ ﺩﺳﺘﻮﺭ DJNZﺩﻭ ﺳﻴﻜﻞ ﻣﺎﺷﻴﻦ ﺯﻣﺎﻥ ﻧﻴﺎﺯ ﺩﺍﺭﺩ ﻭ ﺩﺭ ﺣﻠﻘﻪ ﺍﻭﻝ ﻣﺎ
٢٠٠ﺑﺎﺭ ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺭﺍ ﺍﺟﺮﺍ ﻧﻤﻮﺩﻳﻢ ﭘﺲ ﺩﺭ ﻣﺠﻤﻮﻉ 400µsﻭ ﺩﺭ ﺣﻠﻘﻪ ﺑﻌﺪﻱ ﭼﻮﻥ ﻗﺒﻞ ﺍﺯ ﺁﻥ ﻳﻚ
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
ﺩﺳﺘﻮﺭ MOVﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻭ ﻣﻲﺩﺍﻧﻴﻢ ﺑﺮﺍﻱ ﺍﻧﺠﺎﻡ ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﻧﻴﺰ ﻳﻚ ﺳﻴﻜﻞ ﻣﺎﺷﻴﻦ ﺯﻣﺎﻥ ﻧﻴﺎﺯ ﺩﺍﺭﻳﻢ
r
.i
ﻃﺒﻖ ﺍﺳﺘﺎﻧﺪﺍﺭﺩﻱ ﻛﻪ ﺩﺭ ﺍﺑﺘﺪﺍﻱ ﺍﻳﻦ ﻓﺼﻞ ﺑﺮﺍﻱ ﺳﺨﺖﺍﻓﺰﺍﺭ ﻣﻴﻜﺮﻭ ﻗﺮﺍﺭ ﺩﺍﺩﻳﻢ ﺍﺯ ﻧﮑﺘﻪ:
s
ﻧﻮﺳﺎﻥﺳﺎﺯ 12MHzﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻛﻨﻴﻢ ﻭ ﺩﺭ ﻧﺘﻴﺠﻪ ﻫﺮ ﺳﻴﻜﻞ ﻣﺎﺷﻴﻦ ﻳﻚ ﻣﻴﻜﺮﻭﺛﺎﻧﻴﻪ ﺯﻣﺎﻥ ﻧﻴﺎﺯ ﺩﺍﺭﺩ.
r
e
ﺷﻤﺎ ﻣﻲﺗﻮﺍﻧﻴﺪ ﺑﺮﺍﻱ ﺗﺴﺖ ﺑﺼﺮﻱ ﺍﻳﻦ ﺗﻐﻴﻴﺮﺍﺕ ﺍﺯ ﺩﺳﺘﮕﺎﻩ ﺍﺳﻴﻠﻮﺳﻜﻮﭖ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﻳﻴﺪ .ﺯﻳﺮﺍ ﺑﻪ ﻋﻠﺖ
k
ﺳﺮﻋﺖ ﺯﻳﺎﺩ LEDﻫﺎ ﺗﻐﻴﻴﺮﺍﺕ ﺁﻥ ﺑﺮﺍﻱ ﻣﺎ ﻣﻠﻤﻮﺱ ﻧﻴﺴﺖ.
a
lM
ﺑﺮﺍﻱ ﺗﻨﻄﻴﻢ ﺯﻣﺎﻥ ﺑﻴﺸﺘﺮ ﻣﻲﺗﻮﺍﻧﻴﺪ ﺍﺯ ﭼﻨﺪ ﺣﻠﻘﻪ ﻣﺘﺪﺍﺧﻞ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﻳﻴﺪ ﻛﻪ ﺑﺎ ﻳﻚ ﻣﺜﺎﻝ ﺩﺭ ﺯﻳﺮ ﻧﺸﺎﻥ
Z = 10 * Y
Y = LOOP2 = 255*X
o
ﺍﻳﺠﺎﺩ ﻧﻤﻮﺩﻳﻢ.
w
ﺍﻟﺒﺘﻪ ﺗﻮﺟﻪ ﻧﻤﺎﻳﻴﺪ ﻣﺎ ﺍﺯ ﻣﻘﺪﺍﺭ ﺗﺄﺧﻴﺮ ﻣﺮﺑﻮﻁ ﺑﻪ ﺧﻮﺩ DJNZﺩﺭ ﺣﻠﻘﻪ ﺩﻭﻡ ﻭ ﺳﻮﻡ ﺻﺮﻑ ﻧﻈﺮ
ﻛﺮﺩﻳﻢ ﺯﻳﺮﺍ ﺩﺭ ﻣﻘﺎﺑﻞ ﻋﺪﺩ ﺑﻪ ﺩﺳﺖ ﺁﻣﺪﻩ ﻣﻘﺪﺍﺭ ﻧﺎﭼﻴﺰﻱ ﺍﺳﺖ .ﻭﻣﺎ ﺍﺯ ﺁﻥ ﭼﺸﻢﭘﻮﺷﻲ ﻣﻲﻛﻨﻴﻢ.
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
r
ﻳﻚ ﺗﺎ ﺩﻭ ﺛﺎﻧﻴﻪ ﺧﺎﻣﻮﺵ ﻭ ﺭﻭﺷﻦ ﻛﻨﺪ.
.i
s
COUNT1 EQU 20H
r
COUNT2 EQU 21H
e
COUNT3 EQU 22H
k
MAIN:
MOV P1,#0FFH
a
ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺑﺎﻋﺚ ﻣﻲﺷﻮﺩ ﺗﻤﺎﻡ LEDﻫﺎﻱ ﺭﻭﻱ ﻣﺘﺼﻞ ﺑﻪ ﭘﻮﺭﺕ P1ﺧﺎﻣﻮﺵ ﺷﻮﻧﺪ )ﭼﻮﻥ ﺍﻳﻦ LED
lM
CALL DELAY
tr
MOV P1,#0H
o
CALL DELAY
w
JMP MAIN
ﭘﺮﺵ ﺑﻪ ﺍﺑﺘﺪﺍﻱ MAIN
w
DELAY:
MOV COUNT2,#255
MOV COUNT3,#10
LOOP3:
MOV COUNT2,#255
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
LOOP2:
MOV COUNT1,#255
LOOP1: DJNZ COUNT1,LOOP1
r
DJNZ COUNT2,LOOP2
.i
DJNZ COUNT3,LOOP3
s
RET
r
END
e
k
ﺩﺳﺘﻮﺭ :CALL
a
ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﻓﻮﻕ ﭼﻮﻥ ﺯﻳﺮ ﺭﻭﺍﻝ DELAYﺗﻜﺮﺍﺭ ﺷﺪﻩ ﺑﻮﺩ ﻣﺎ ﺍﺯ ﺗﻜﺮﺍﺭ ﺁﻥ ﺧﻮﺩﺩﺍﺭﻱ ﻛﺮﺩﻳﻢ ﻭ ﺍﺯ
lM
ﺩﺳﺘﻮﺭ CALLﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩﻳﻢ ﺩﺭ ﻫﻨﮕﺎﻡ ﺍﻧﺠﺎﻡ ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺑﺮﺍﻱ ﺯﻳﺮ ﺑﺮﻧﺎﻣﻪ CPU ، DELAYﺑﻪ
o
ﺍﺑﺘﺪﺍﻱ ﺑﺮﻧﺎﻣﻪ DELAYﺭﻓﺘﻪ ﻭ ﺁﻥ ﺭﺍ ﺍﺟﺮﺍ ﻣﻲﻛﻨﺪ ﺗﺎ ﺑﻪ ﺩﺳﺘﻮﺭ RETﺑﺮﺳﺪ .ﭘﺲ ﺍﺯ ﺍﻧﺠﺎﻡ ﻛﺎﻣﻞ ﺍﻳﻦ
tr
ﻣﺮﺣﻠﻪ ﻭ ﺭﺳﻴﺪﻥ ﺑﻪ ﺩﺳﺘﻮﺭ RETﺍﺯ ﺯﻳﺮ ﺑﺮﻧﺎﻣﻪ DELAY ،ﺑﺮﮔﺸﺘﻪ ﻭ ﻛﺎﺭ ﺧﻮﺩ ﺭﺍ ﺑﻌﺪ ﺍﺯ ﺩﺳﺘﻮﺭ
n
CALLﺍﺩﺍﻣﻪ ﻣﻲﺩﻫﺪ .ﺷﻤﺎ ﺑﺎ ﺭﻭﺵﻫﺎﻱ ﻣﺸﺎﺑﻪ ﻣﻲﺗﻮﺍﻧﻴﺪ ﺑﻪ ﺻﻮﺭﺕ ﺗﻘﺮﻳﺒﻲ ﺗﺄﺧﻴﺮ ﻣﻮﺭﺩ ﻧﻈﺮ ﺧﻮﺩ ﺭﺍ
o
.C
ﺩﺭ ﻛﻨﺘﺮﻟﺮﻫﺎ ﺍﻋﻤﺎﻝ ﻧﻤﺎﻳﻴﺪ ،ﻭﻟﻲ ﺑﺮﺍﻱ ﺍﻳﺠﺎﺩ ﺗﺄﺧﻴﺮﻫﺎﻱ ﺩﻗﻴﻖﺗﺮ ﺩﺭ ﺍﺟﺮﺍﻱ ﺑﺮﻧﺎﻣﻪ ﻣﻲﺗﻮﺍﻧﻴﺪ ﺍﺯ TIMER
w
r
ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ ﺷﻤﺎ ﺗﻮﺳﻂ ﺩﺳﺘﻮﺭﺍﺕ ﺑﺎﻳﺘﻲ ﻧﻤﻲﺗﻮﺍﻧﻴﺪ ﺭﻭﻱ ﻳﻚ ﺧﺎﻧﻪ ﺍﺯ ﺑﻴﺖ ﺣﺎﻓﻈﻪ ﻛﺎﺭ ﻛﻨﻴﺪ ﺟﻬﺖ
.i
s
ﻛﺎﺭ ﺑﺎ ﺑﻴﺖﻫﺎ ﻣﻲﺗﻮﺍﻧﻴﺪ ﺍﺯ ﺩﺳﺘﻮﺭﺍﺕ ﺑﻴﺘﻲ ﺯﻳﺮ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﻳﻴﺪ.
r
SETB
e
k
ﻳﻚ ﺑﻴﺖ ﺭﺍ ﻳﻚ ﻛﺮﺩﻩ
a
SETB P1.0
lM
ﺑﻴﺖ ﺻﻔﺮ ﺍﺯ ﺑﺎﻳﺖ P1ﺭﺍ ﻳﻚ ﻛﺮﺩﻩ ﻭ ﺗﺄﺛﻴﺮﻱ ﺭﻭﻱ ﺑﻘﻴﻪ ﺑﻴﺖﻫﺎ ﻧﺪﺍﺭﺩ.
o
P1
tr
D7 D6 D5 D4 D3 D2 D1 D0
o
CLR
.C
CLR P0.5
w
ﺑﻴﺖ ﭘﻨﺠﻢ ﺍﺯ ﺑﺎﻳﺖ P0ﺭﺍ ﺻﻔﺮ ﻛﺮﺩﻩ ﻭ ﺗﺎﺛﻴﺮﻱ ﺭﻭﻱ ﺑﻘﻴﻪ ﺑﻴﺖﻫﺎ ﻧﺪﺍﺭﺩ.
w
P0
X X 0 X X X X X
D7 D6 D5 D4 D3 D2 D1 D0
JNB
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
JB
r
.i
ﭘﺮﺵ ﺩﺭ ﺻﻮﺭﺕ ﻳﻚ ﺑﻮﺩﻥ
s
JNB P1.2,LOOP
r
e
ﺍﻳﻦ ﺩﺳﺘﻮﺭ ﺑﻴﺖ ﺩﻭﻡ ﺑﺎﻳﺖ P1ﺭﺍ ﺑﺮﺭﺳﻲ ﻣﻲﻛﻨﺪ ،ﺍﮔﺮ ﺍﻳﻦ ﭘﺎﻳﻪ ﺍﺯ ﺑﻴﺮﻭﻥ GNDﺷﺪﻩ ﺑﻮﺩ ﺑﻪ
k
LOOPﭘﺮﺵ ﻛﺮﺩﻩ ﺩﺭ ﻏﻴﺮ ﺍﻳﻦﺻﻮﺭﺕ ﺑﺮﻧﺎﻣﻪ ﺍﺯ ﺧﻂ ﺑﻌﺪﻱ ﺍﺩﺍﻣﻪ ﺧﻮﺍﻫﺪ ﻳﺎﻓﺖ .ﺑﻴﺸﺘﺮﻳﻦ ﻛﺎﺭﺑﺮﺩ ﺍﻳﻦ
a
lM
ﺩﻭ ﺩﺳﺘﻮﺭ ﺑﺮﺍﻱ ﭼﻚ ﻛﺮﺩﻥ ﻛﻠﻴﺪ ﺍﺳﺖ ﻛﻪ ﺩﺭ ﺍﺩﺍﻣﻪ ﻳﻚ ﻣﺜﺎﻝ ﺑﺮﺍﻱ ﺭﻭﺷﻦ ﺷﺪﻥ ﻣﻮﺿﻮﻉ ﺁﻭﺭﺩﻩ ﺷﺪﻩ
ﺍﺳﺖ.
o
tr
ﺑﺮﻧﺎﻣﻪﺍﻱ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺑﺎ ﺯﺩﻥ ﻛﻠﻴﺪ P3.3ﻋﺪﺩ 55Hﺭﻭﻱ P1ﻗﺮﺍﺭ ﺑﮕﻴﺮﺩ ﻭﺑﺎ ﺯﺩﻥ ﻛﻠﻴﺪ P3.5
o
ORG 00H
w
SCAN:
w
JNB P3.3,NUM1
JNB P3.5,NUM2
w
JMP SCAN
NUM1:
MOV P1,#55H
JMP SCAN
NUM2:
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
MOV P1,#0AAH
JMP SCAN
r
END
.i
s
r
e
k
a
lM
o
tr
n
o
.C
w
w
w
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
TIMER
r
.i
ﻣﻲﺗﻮﺍﻧﻴﻢ ﻭﻗﺎﻳﻊ ﻣﺨﺘﻠﻒ ﺭﺍ ﺷﻤﺎﺭﺵ ﻛﻨﻴﻢ ﻣﺎﻧﻨﺪ ﺷﻤﺎﺭﺵ ﺳﻴﻜﻞﻫﺎﻱ ﻣﺎﺷﻴﻦ ﻛﻪ ﺩﺭ ﺍﻳﻦﺻﻮﺭﺕ
s
ﻣﻲﺗﻮﺍﻧﻴﻢ ﺯﻣﺎﻥ ﺭﺍ ﻣﺤﺎﺳﺒﻪ ﻧﻤﺎﻳﻴﻢ.
r
e
ﺍﺻﻮﻝ ﻛﺎﺭ ﺗﺎﻳﻤﺮ ﺷﻤﺎﺭﺵ ﺭﻭ ﺑﻪ ﺑﺎﻻ ﺩﺭ ﻳﻚ ﺳﻴﻜﻞ ﻣﺎﺷﻴﻦ ﺍﺳﺖ .ﺑﺮﺍﻱ ﺷﻤﺎﺭﺵ ،ﺩﻭﺑﺎﻳﺖ ﺑﻪ ﻧﺎﻡﻫﺎﻱ
k
THXﻭ TLXﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﺩﺭ ﻣﺠﻤﻮﻉ ﺑﻪ ﺻﻮﺭﺕ ١٦ﺑﻴﺖ ﻛﻨﺎﺭ ﻫﻢ ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﻧﺪ.
a
lM
TH TL
8 7 6 5 4 3 2 1 8 7 6 5 4 3 2 1
o
tr
ﺩﺭ 89C51ﺩﻭ ﺗﺎﻳﻤﺮ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﺣﺎﻟﺖﻫﺎﻱ ﻣﺨﺘﻠﻔﻲ ﺭﺍ ﻣﻲﺗﻮﺍﻧﻨﺪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ ﻛﻪ ﺩﺭ ﺑﺎﻳﺖ
n
TMODﺍﻧﺘﺨﺎﺏ ﻣﻲﺷﻮﻧﺪ.
o
.C
M0ﻭ M1ﺩﺭ ، Tmodﺣﺎﻟﺖ ﻛﺎﺭ ﺗﺎﻳﻤﺮ ﺭﺍ ﻣﻄﺎﺑﻖ ﺟﺪﻭﻝ ﺯﻳﺮ ﻣﺸﺨﺺ ﻣﻲﻛﻨﻨﺪ.
w
1 1 ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ ﺗﺎﻳﻤﺮ ﺑﻪ ﺩﻭ ﺗﺎﻳﻤﺮ ٨ﺑﻴﺘﻲ ﻣﺠﺰﺍ ﺗﺒﺪﻳﻞ ﻣﻲﺷﻮﺩ 3
r
.i
در ﺣﺎﻟﺖ ﺻﻔﺮ:
s
ﺳﻪ ﺑﻴﺖ ﺑﺎﻻﻱ ) (THX ,TLXﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻗﺮﺍﺭ ﻧﻤﻲﮔﻴﺮﻧﺪ ﻭ ﺣﺪﺍﻛﺜﺮ ﺗﺎ ﻋﺪﺩ ٢١٣ = ٨١٩٢
r
e
ﻣﻲﺗﻮﺍﻧﺪ ﺷﻤﺎﺭﺵ ﻛﻨﺪ.
k
در ﺣﺎﻟﺖ ﯾﮏ:
a
ﺗﻤﺎﻡ ) ١٦ﺑﻴﺖ (THX,TLXﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻗﺮﺍﺭ ﮔﺮﻓﺘﻪ ﻭ TIMERﺣﺪﺍﻛﺜﺮ ﺗﺎ ﻋﺪﺩ = ٦٥٥٣٥
lM
ﻓﻘﻂ ٨ﺑﻴﺖ ﭘﺎﻳﻴﻦ ﺷﻤﺎﺭﺵ ﺷﺪﻩ ﻭ ٨ﺑﻴﺖ ﺑﺎﻻ ﺑﻪ ﻋﻨﻮﺍﻥ BACKUPﻣﻘﺪﺍﺭ ٨ﺑﻴﺖ ﭘﺎﻳﻴﻦ ﻣﻮﺭﺩ
n
ﺍﺳﺘﻔﺎﺩﻩ ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﺩ .ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ ﺗﺎﻳﻤﺮ ﺣﺪﺍﻛﺜﺮ ﺗﺎ ﻋﺪﺩ ٢٨ = ٢٥٥ﻣﻲﺗﻮﺍﻧﺪ ﺷﻤﺎﺭﺵ ﻧﻤﺎﻳﺪ.
o
.C
ﺩﺭ ﺣﺎﻟﺖﻫﺎﻱ ﻓﻮﻕ ﭼﻨﺎﻧﭽﻪ ﺷﻤﺎﺭﺵ ﺍﺩﺍﻣﻪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ﺗﺎ ﺑﻪ ﻣﻘﺪﺍﺭ ﺣﺪﺍﻛﺜﺮ ﺩﺭ ﻫﺮ ﺣﺎﻟﺖ ﺑﺮﺳﺪ
w
ﺑﻌﺪ ﺍﺯ ﻳﻚ ﺷﻤﺎﺭﺵ ﺩﻳﮕﺮ ﺳﺮﺭﻳﺰ ﺭﺥ ﺩﺍﺩﻩ ﻳﻌﻨﻲ ﺩﻭﺑﺎﺭﻩ ﺗﻤﺎﻡ ﺑﻴﺖﻫﺎ ﺻﻔﺮ ﺷﺪﻩ ﻭ ﭘﺮﭼﻤﻲ ﺑﻪ ﻧﺎﻡ TFx
w
ﻧﮑﺘﻪ :ﺟﻬﺖ ﺷﺮﻭﻉ ﻛﺎﺭ ﺗﺎﻳﻤﺮ ﺍﺑﺘﺪﺍ ﺑﺎﻳﺪ ﺑﻴﺖ TRxﺭﺍ ﻳﻚ ﻛﺮﺩ ﻭ ﺑﺎ ﺻﻔﺮ ﻛﺮﺩﻥ ﺁﻥ ﻣﻲﺗﻮﺍﻥ ﺍﺯ
ﺷﻤﺎﺭﺵ ﺗﺎﻳﻤﺮ ﺟﻠﻮﮔﻴﺮﻱ ﻛﺮﺩ .ﻣﺎ ﺑﺎ ﺑﺎﺭﮔﺬﺍﺭﻱ ﻋﺪﺩﻱ ﻣﻨﺎﺳﺐ ﻣﻲﺗﻮﺍﻧﻴﻢ ﺯﻣﺎﻥ ﺳﺮﺭﻳﺰ ﺭﺍ ﻛﻨﺘﺮﻝ ﻛﺮﺩﻩ ﻭ
r
.i
ﺗﺄﺧﻴﺮ ﺯﻣﺎﻧﻲ ﻣﻮﺭﺩ ﻧﻈﺮ ﺭﺍ ﺍﻳﺠﺎﺩ ﻧﻤﺎﻳﻴﻢ.
s
r
:CT
e
k
ﺟﻬﺖ ﺗﻌﻴﻴﻦ ﺣﺎﻟﺖ ﻛﺎﺭ ﺑﻪ ﺻﻮﺭﺕ ﺗﺎﻳﻤﺮ ﻳﺎ ﻛﻨﺘﻮﺭ ﺍﺳﺖ ﺍﮔﺮ ﺍﻳﻦ ﺑﻴﺖ ﺻﻔﺮ ﺑﺎﺷﺪ ﭘﺎﻟﺴﻬﺎﻱ
a
ﺷﻤﺎﺭﺵ ﺍﺯ ﻧﻮﺳﺎﻥ ﺳﺎﺯ ﮔﺮﻓﺘﻪ ﻣﻴﺸﻮﺩ ﺑﺼﻮﺭﺗﻲ ﻛﻪ ﺑﻪ ﺍﺯﺍﻱ ﻫﺮ ﺳﻴﻜﻞ ﻳﻚ ﺷﻤﺎﺭﺵ ﺧﻮﺍﻫﻴﻢ ﺩﺍﺷﺖ ﺩﺭ
lM
ﺣﺎﻟﺖ ﻣﻲﮔﻮﺋﻴﻢ ﺩﺭﺣﺎﻟﺖ ﺗﺎﻳﻤﺮ ﻗﺮﺍﺭ ﮔﺮﻓﺘﻪ ﺍﺳﺖ ﺯﻳﺮﺍ ﺑﻪ ﺍﺯﺍﻱ ﻳﻚ ﻣﻴﻜﺮﻭ ﺛﺎﻧﻴﻪ ﻳﻚ ﺷﻤﺎﺭﺵ ﺭﻭﺑﻪ ﺑﺎﻻ
o
ﺧﻮﺍﻫﻴﻢ ﻛﺮﺩ ﻭ ﺍﮔﺮ ﺍﻳﻦ ﺑﻴﺖ ﺩﺭ ﻭﺿﻌﻴﺖ ﻳﻚ ﻗﺮﺍﺭ ﮔﻴﺮﺩ ﺩﻳﮕﺮ ﭘﺎﻟﺴﻬﺎﻱ ﺷﻤﺎﺭﺵ ﺭﺍ ﺍﺯ ﻛﺮﻳﺴﺘﺎﻝ
n
ﺩﺭﻳﺎﻓﺖ ﻧﻤﻲﻛﻨﺪ ﺑﻠﻜﻪ ﻳﻜﻲ ﺍﺯ ﭘﺎﻳﻪ ﻫﺎﻱ ﭘﻮﺭﺕ ﺳﻮﻡ ﻭﺭﻭﺩﻱ ﺍﻳﻦ ﭘﺎﻟﺴﻬﺎ ﺍﺯ ﺧﺎﺭﺝ ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﺩﻛﻪ ﺑﻪ
o
.C
ﺍﻳﻦ ﺣﺎﻟﺖ ﺷﻤﺎﺭﻧﺪﻩ ﻣﻲﮔﻮﺋﻴﻢ ﻭ ﻣﻌﻤﻮ ﹰﻻ ﺑﺮﺍﻱ ﺷﻤﺎﺭﺵ ﻳﻚ ﺭﻭﻳﺪﺍﺩ ﺧﺎﺭﺝ ﺍﺯ ﻣﻴﻜﺮﻭ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﺷﻮﺩ.
ﻧﻜﺘﻪ :ﺩﺭ ﺣﺎﻟﺖ ﺷﻤﺎﺭﻧﺪﻩ ﭘﺎﻟﺴﻬﺎ ﺍﺯ ﭘﺎﻳﻪ ﻫﺎﻱ T0ﻭ T1ﺩﺭﻳﺎﻓﺖ ﻣﻴﺸﻮﻧﺪ.
w
:GATE
w
ﺍﻳﻦ ﺑﻴﺖ ﺑﺮﺍﻱ ﺗﺎﻳﻤﺮ ﻣﺸﺨﺺ ﻣﻲﻛﻨﺪ ﻛﻪ ﺩﺭ ﭼﻪ ﺯﻣﺎﻧﻲ ﺷﺮﻭﻉ ﺑﻪ ﻛﺎﺭ ﻧﻤﺎﻳﺪ .ﺍﮔﺮ ﺻﻔﺮ ﺑﺎﺷﺪ ﺩﺭ
w
ﺻﻮﺭﺕ ﻳﻚ ﺷﺪﻥ TRﺷﺮﻭﻉ ﺑﻪ ﻛﺎﺭ ﻣﻲﻛﻨﺪ ﻭ ﺍﮔﺮ ﻳﻚ ﺑﺎﺷﺪ ﺩﺭ ﺻﻮﺭﺕ ﻳﻚ ﺷﺪﻥ TRﻭ ﻧﻴﺰ ﻳﻚ
ﺷﺪﻥ ﭘﺎﻳﻪ INTﺷﺮﻭﻉ ﺑﻪ ﻛﺎﺭ ﻣﻲﻛﻨﺪ ﻭ ﺍﮔﺮ ﻳﻜﻲ ﺍﺯ ﺁﻥﻫﺎ ) TRﻭ ﻳﺎ (INTﺻﻔﺮ ﺷﻮﺩ ﺗﺎﻳﻤﺮ STOP
ﺧﻮﺍﻫﺪ ﻛﺮﺩ.
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
r
.i
) MOVﻣﺜﺎﻝ TMOD,#10H
s
r
-٢ﺑﺎﺭﮔﺬﺍﺭﻱ ﺗﺎﺧﻴﺮ ﻣﻮﺭﺩ ﻧﻈﺮ ﺩﺭ TH X , TL X
e
) Movﻣﺜﺎﻝ TH1,#6CH
k
a
Mov TL1,#0C0H
lM
-٣ﺭﻭﺷﻦ ﻛﺮﺩﻥ ﺗﺎﻳﻤﺮ ﺑﺎ ﺩﺳﺘﻮﺭ SETB TR X
-٤ﭼﻚ ﻛﺮﺩﻥ ﺑﻴﺖ TFXﻛﻪ ﭼﻪ ﻣﻮﻗﻊ ﻳﻚ ﺷﺪﻩ ﺍﺳﺖ ﻳﻌﻨﻲ ﺷﻤﺎﺭﺵ ﺑﻪ ﻋﺪﺩ ﺳﺮﺭﻳﺰ ﺭﺳﻴﺪﻩ
n
ﺍﺳﺖ.
o
)CLRﻣﺜﺎﻝ TR1
w
ﺣﺎﻝ ﺑﻪ ﺗﺮﺗﻴﺒﻲ ﻛﻪ ﮔﻔﺘﻪ ﺷﺪ ﺑﺮﻧﺎﻣﻪﺍﻱ ﺑﺮﺍﻱ ﺍﻳﺠﺎﺩ ٥٠ﻣﻴﻠﻲ ﺛﺎﻧﻴﻪ ﺗﺄﺧﻴﺮ ﻣﻲﻧﻮﻳﺴﻴﻢ.
DELAY:
MOV TMOD,#01H
MOV TH0,#3CH
ﻣﻘﺪﺍﺭﺩﻫﻲ TIMER0ﺑﺎ ﻋﺪﺩ 3CB0Hﻳﺎ 15536ﺩﺳﻴﻤﺎﻝ
MOV TL0,#0B0H
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
SETB TR0
ﺑﺮﺭﺳﻲ ﭘﺮﭼﻢ Timer0ﺟﻬﺖ ﻳﻚ ﺷﺪﻥ ﺁﻥ
LOOP:JNB TF0,LOOP
CLR TF0
r
CLR TR0
.i
RET
ﺯﻳﺮ ﺑﺮﻧﺎﻣﻪ ﻓﻮﻕ ﺍﮔﺮ CALLﺷﻮﺩ 50msﺗﺄﺧﻴﺮ ﺍﻳﺠﺎﺩ ﻣﻲﻛﻨﺪ.
s
r
ﺍﺑﺘﺪﺍ TMODﻣﻄﺎﺑﻖ ﺷﻜﻞ ﺯﻳﺮ ﺑﺎﺭﮔﺬﺍﺭﻱ ﺷﺪﻩ ﺍﺳﺖ.
e
k
TIMER 1 TIMER 0
a
GATE CT M1 M0 GATE CT M1 MO
lM
0 0 0 0 0 0 0 1
o
ﺩﺭ ﺍﻳﻦ ﺑﺎﺭﮔﺬﺍﺭﻱ TIMER0ﺩﺭ ﺣﺎﻟﺖ ١٦ﺑﻴﺘﻲ ﺑﻪ ﺻﻮﺭﺕ ﺗﺎﻳﻤﺮ ﻭ ﺷﺮﻭﻉ ﺑﺎ ﻳﻚ ﻛﺮﺩﻥ TR
tr
ﻣﺸﺨﺺ ﺷﺪﻩ )ﺷﺮﻭﻉ ﻧﺮﻡﺍﻓﺰﺍﺭﻱ( ﻭ ﺍﺯ ﺁﻧﺠﺎﻳﻲ ﻛﻪ ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ ﺗﺎﻳﻤﺮ ﺣﺪﺍﻛﺜﺮ ﺗﺎ ﻋﺪﺩ ٦٥٥٣٦
n
ﺷﻤﺎﺭﺵ ﻛﺮﺩﻩ ﺳﭙﺲ ﺳﺮﺭﻳﺰ ﻣﻲﻛﻨﺪ .ﻣﺎ ﺑﺮﺍﻱ ﺗﺄﺧﻴﺮ 50msﻣﻲﺑﺎﻳﺴﺖ ﻋﺪﺩﻱ ﺭﺍ ﺩﺭ TL0ﻭ TH0
o
.C
)ﺑﺎﻳﺖ ﭘﺎﻳﻴﻨﻲ ﻭ ﺑﺎﻻﻳﻲ ﺗﺎﻳﻤﺮ ﺻﻔﺮ( ﺑﺎﺭﮔﺬﺍﺭﻱ ﻛﻨﻴﻢ ﻛﻪ ﺑﻌﺪ ﺍﺯ ٥٠٠٠٠ﺳﻴﻜﻞ ﻳﺎ ٥٠٠٠٠ﻣﻴﻜﺮﻭ ﺛﺎﻧﻴﻪ
ﻳﻌﻨﻲ ﺍﮔﺮ TH0ﻭ TL0ﺭﺍ ﺩﺭ ﻣﺠﻤﻮﻉ ﺑﺎ ﻋﺪﺩ ١٥٥٣٦ﺑﺎﺭﮔﺬﺍﺭﻱ ﻛﻨﻴﻢ ﺷﻤﺎﺭﺵ ﺑﻪ ﺻﻮﺭﺕ
w
ﺻﻌﻮﺩﻱ ﺍﻧﺠﺎﻡ ﻣﻲﺷﻮﺩ ﺗﺎ ﺑﻪ ﻋﺪﺩ ﺳﺮﺭﻳﺰ ٦٥٥٣٦ﻣﻲﺭﺳﻴﻢ ﺩﺭ ﺍﻳﻦ ﻣﺪﺕ ﻣﺎ ﻣﻲﺗﻮﺍﻧﻴﻢ ﭘﺮﭼﻢ TF٠ﺭﺍ
ﻣﺮﺗﺒﹰﺎ ﭼﻚ ﻛﻨﻴﻢ ﻛﻪ ﺳﺮﺭﻳﺰ ﺭﺥ ﺩﺍﺩﻩ ﻳﺎ ﺧﻴﺮ ﻭ ﺩﺭ ﺻﻮﺭﺕ ﭘﻴﺶ ﺁﻣﺪﻥ ﺳﺮﺭﻳﺰ ﭘﺮﭼﻢ TF٠ﺭﺍ ﭘﺎﻙ ﻛﺮﺩﻩ
ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﻋﺪﺩ 3Cﺩﺭ ﻣﺒﻨﺎﻱ ﺷﺎﻧﺰﺩﻩ ﺭﺍ ﺩﺭ TH0ﻭ ﻋﺪﺩ B0ﺭﺍ ﺩﺭ TL0ﺑﺎﺭﮔﺬﺍﺭﻱ ﻛﺮﺩﻳﻢ ﭘﺲ
ﺩﺭ ﻣﺠﻤﻮﻉ ﺩﺭ ﺗﺎﻳﻤﺮ ﺻﻔﺮ ﻋﺪﺩ 3CB0ﺩﺭ ﻣﺒﻨﺎﻱ ﺷﺎﻧﺰﺩﻩ ﺭﺍ ﺧﻮﺍﻫﻴﻢ ﺩﺍﺷﺖ ﻛﻪ ﺑﺮﺍﺑﺮ ﻋﺪﺩ 15536
r
.i
ﺩﺳﻴﻤﺎﻝ ﻣﻲﺑﺎﺷﺪ.
s
ﺩﺭ ﻣﺮﺣﻠﻪ ﺑﻌﺪﻱ ﻣﺜﺎﻝ ،ﺑﺎ ﻳﻚ ﻛﺮﺩﻥ TR0ﺗﺎﻳﻤﺮ ﺭﺍ ﺭﺍﻩﺍﻧﺪﺍﺯﻱ ﻛﺮﺩﻳﻢ ﻭ ﺩﺭ ﺧﻂ ﺑﻌﺪﻱ ﺑﺎ
r
e
ﺳﺮﻛﺸﻲ TF0ﻣﻨﺘﻈﺮ ﻳﻚ ﺷﺪﻥ TF0ﺷﺪﻳﻢ ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ ﻛﻪ CPUﻳﻚ ﺣﻠﻘﻪ ﺷﺮﻃﻲ ﺭﺍ ﻣﺮﺗﺒﹰﺎ ﺍﺟﺮﺍ
k
ﻣﻲﻛﻨﺪ ﭘﺲ ﺍﺯ ﻳﻚ ﺷﺪﻥ TF0ﺍﺯ ﺣﻠﻘﻪ ﺧﺎﺭﺝ ﻣﻲﺷﻮﺩ ﻭ ﺑﺎ ﺻﻔﺮ ﻛﺮﺩﻥ TF0ﺑﺮﻧﺎﻣﻪ DELAYﺭﺍ ﺑﺮﺍﻱ
a
lM
ﺑﺎﺭ ﺩﻳﮕﺮ ﺁﻣﺎﺩﻩ ﻛﺮﺩﻳﻢ ﻭ ﺗﺎﻳﻤﺮ ﺭﺍ ﻧﮕﻬﺪﺍﺷﺘﻴﻢ ﻭ ﺑﺎ ﺭﺳﻴﺪﻥ ﺑﻪ RETﺑﻪ ﺑﺮﻧﺎﻣﻪ ﺍﺻﻠﻲ ﺑﺎﺯ ﺧﻮﺍﻫﻴﻢ ﮔﺸﺖ.
ﺍﮔﺮ ﺑﺨﻮﺍﻫﻴﻢ ﺯﻣﺎﻥ ﺗﺄﺧﻴﺮ ﺑﻴﺸﺘﺮ ﺍﺯ ٦٥ﻣﻴﻠﻲ ﺛﺎﻧﻴﻪ ﺑﺎﺷﺪ ﺑﺎﻳﺪ ﺍﺯ ﻳﻚ ﺣﻠﻘﻪ DJNZ ﻧﮑﺘﻪ:
o
tr
ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻴﻢ.
n
o
ﺑﺎ ﻳﻚ ﺗﺄﺧﻴﺮ ﺯﻣﺎﻧﻲ ﻳﻚ ﺛﺎﻧﻴﻪ ﻣﺮﺗﺒﹰﺎ LEDﻫﺎﻱ ﺭﻭﻱ ﭘﻮﺭﺕ ﻳﻚ ﺭﺍ ﺧﺎﻣﻮﺵ ﻭ ﺭﻭﺷﻦ ﻧﻤﺎﻳﻴﺪ.
MAIN:
w
MOV TMOD,#01H
MAIN LOOP
MOV P1,#0H
w
CALL DELAY
MOV P1,#0FFH
w
CALL DELAY
JMP MAIN
DELAY:
MOV R0,#20
DELAY LOOP:
MOV TH0,#3CH
MOV TH0,#0B0H
SETB TR0 X = 50 ms
Y = 20 * X
Y = 20 * 50 ms = 1000ms
=1s
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
r
DJNZ R0,DELAYLOOP
.i
RET
s
END
r
e
k
a
lM
o
tr
n
o
.C
w
w
w
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ، ﺗﻮﻟﯿﺪ،ﻃﺮاﺣﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
r
MAIN:
.i
MOV P1,#55H
CALL DELAY
s
MOV P1,#0AAH
r
CALL DELAY
JMP MAIN
e
k
DELAY:
MOV R1,#255
a
MOV R2,#10
LOOP2:
lM
LOOP1:
MOV R0,#255
LOOP0:DJNZ R0,LOOP0
DJNZ R1,LOOP1
o
DJNZ R2,LOOP2
tr
RET
END
n
o
.C
w
w
w
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
r
MOD1:
.i
ﺩﺭ ﺍﻳﻦ ﻗﺴﻤﺖ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺍﻳﻨﻜﻪ LEDﻫﺎ ﺑﻪ ﺻﻮﺭﺕ ﺁﻧﺪ ﻣﺸﺘﺮﻙ ﺑﺴﺘﻪ ﺷﺪﻩﺍﻧﺪ ﻳﻚ LEDﺧﺎﻣﻮﺵ
s
r
ﻫﺸﺖ ﺑﺎﺭ ﺑﻪ ﺳﻤﺖ ﺭﺍﺳﺖ ﺟﺎﺑﺠﺎ ﻣﻲﺷﻮﺩ.
e
MOV R0,#8
k
MOV A,#01H
LOOPMOD1:
a
RR A
MOV P1,A
lM
CALL DELAY
DJNZ R0,LOOPMOD1
o
MOD2:
ﺩﺭ ﺍﻳﻦ ﻗﺴﻤﺖ ﻫﻤﺎﻥ LEDﺩﺭ MOD1ﻫﻔﺖ ﺑﺎﺭ ﺑﻪ ﺳﻤﺖ ﭼﭗ ﺟﺎﺑﺠﺎ ﻣﻲﺷﻮﺩ.
tr
MOV R0,#7
LOOPMOD2:
n
RL A
MOV P1,A
o
CALL DELAY
.C
DJNZ R0,LOOPMOD2
MODONOFF:
MOV R0,#5
w
CLR A
LOOPMODONOFF:
CPL A
w
MOV P1,A
CALL DELAY
w
DJNZ R0,LOOPMODONOFF
MOD3:
ﺍﻳﻦ ﻣﺪ ﻣﺎﻧﻨﺪ MOD1ﻋﻤﻞ ﻛﺮﺩﻩ ﺑﺎ ﺍﻳﻦ ﺗﻔﺎﻭﺕ ﻛﻪ LEDﺭﻭﺷﻦ ﺑﻴﻦ ﻫﺸﺖ LEDﻫﺸﺖ ﺑﺎﺭ ﺳﻤﺖ
MOV R0,#8
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ، ﺗﻮﻟﯿﺪ،ﻃﺮاﺣﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
MOV A,#0FEH
LOOPMOD3:
RR A
MOV P1,A
r
CALL DELAY
DJNZ R0,LOOPMOD3
.i
s
MOD4:
. ﺭﻭﺷﻦ ﺭﺍ ﻫﺸﺖ ﺑﺎﺭ ﺑﻪ ﺳﻤﺖ ﭼﭗ ﺍﻧﺘﻘﺎﻝ ﻣﻲﺩﻫﺪLED ﺍﻳﻦ ﻣﺪ ﻳﻚ
r
MOV R0,#8
e
LOOPMOD4:
k
MOV P1,A
CALL DELAY
a
RL A
DJNZ R0,LOOPMOD4
lM
CALL DELAY
MODCPL:
o
.ﻫﺎ ﻳﻜﻲ ﺩﺭ ﻣﻴﺎﻥ ﺭﻭﺷﻦ ﻭ ﺑﻘﻴﻪ ﺧﺎﻣﻮﺵ ﻣﻲﺷﻮﻧﺪ ﻭ ﺑﺎﻟﻌﻜﺲLED ﺩﺭ ﺍﻳﻦ ﻣُﺪ
tr
MOV R0,#8
MOV A,#55H
LOOPMODCPL:
n
CPL A
MOV P1,A
o
CALL DELAY
.C
DJNZ R0,LOOPMODCPL
JMP MAIN
w
w
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
w
LOOPDELAY:JNB TF0,LOOPDELAY
CLR TR0
CLR TF0
DJNZ R7,LDK
r
RET
.i
s
r
e
k
a
lM
o
tr
n
o
.C
w
w
w
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
r
.i
s
r
e
k
a
lM
o
tr
n
o
.C
w
w
w
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
ﺩﺭ ﺑﺮﺩ ﺁﻣﻮﺯﺷﻲ ﺩﻭ ﻛﻠﻴﺪ ﻓﻌﺎﻝ ﺑﻪ ﺻﻔﺮ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﺑﻪ P3.3ﻭ P3.5ﻣﺘﺼﻞ ﺍﺳﺖ ﺷﻤﺎ
r
.i
ﻣﻲﺗﻮﺍﻧﻴﺪ ﺍﺯ ﺁﻥﻫﺎ ﻧﻴﺰ ﺩﺭ ﻃﺮﺍﺣﻲ ﺧﻮﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﻳﻴﺪ.
s
r
e
ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ ):(٨
k
ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﺯﻳﺮ ﺑﺎ ﺯﺩﻥ ﻛﻠﻴﺪﻫﺎ ﻣﻲﺗﻮﺍﻧﻴﺪ ﻣﻨﻮﻱ ﻣﻮﺭﺩ ﻧﻈﺮ ﺟﻬﺖ ﻧﻤﺎﻳﺶ ﺭﻭﻱ LEDﻫﺎﻱ ﺑﺮﺩ
MAIN:
JNB P3.0,MENU1
o
JNB P3.5,MENU2
JMP MAIN
tr
MENU1:
MOV P1,#55H
n
JMP MAIN
MENU2:
o
MOV P1,#0AAH
JMP MAIN
.C
END
w
w
w
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
r
ﺩﺭ ﺻﻔﺤﻪ ﻛﻠﻴﺪﻫﺎﻱ ﻣﺎﺗﺮﻳﺴﻲ ﺍﺻﻮﻝ ﻛﺎﺭ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﺍﺳﺖ ﭼﻨﺎﻧﭽﻪ ﻛﻠﻴﺪﻱ ﺯﺩﻩ ﺷﻮﺩ ﺳﻄﺮ
.i
ﻭ ﺳﺘﻮﻥ ﻛﻠﻴﺪ ﻣﺬﻛﻮﺭ ﺑﻪ ﻫﻢ ﻭﺻﻞ ﻣﻲﺷﻮﻧﺪ ﻣﺎ ﻣﻲﺗﻮﺍﻧﻴﻢ ﺑﺎ ﻛﻨﺘﺮﻝ ﺩﻗﻴﻖ ﺳﻄﺮﻫﺎ ﻭ ﺳﺘﻮﻧﻬﺎ ﻛﻠﻴﺪ ﺯﺩﻩ
s
r
ﺷﺪﻩ ﺭﺍ ﭘﻴﺪﺍ ﻛﻨﻴﻢ.
e
k
ﺑﺮﺍﻱ ﺍﻳﻦ ﻛﺎﺭ ﺑﻪ ﺗﺮﺗﻴﺐ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ.
a
-١ﺳﻄﺮ ﻳﻚ ﺭﺍ ﺯﻣﻴﻦ ﻣﻲﻛﻨﻴﻢ
lM
-٢ﺳﺘﻮﻧﻬﺎ ﺭﺍ ﭼﻚ ﻣﻲﻛﻨﻴﻢ
o
-٣ﺳﻄﺮ ﻳﻚ ﺭﺍ ﻳﻚ ﻣﻲﻛﻨﻴﻢ
tr
-٥ﺳﺘﻮﻧﻬﺎ ﺭﺍ ﭼﻚ ﻣﻲﻛﻨﻴﻢ
o
.C
-٦ﺳﻄﺮ ﺩﻭ ﺭﺍ ﻳﻚ ﻣﻲﻛﻨﻴﻢ
w
-٨ﺳﺘﻮﻧﻬﺎ ﺭﺍ ﭼﻚ ﻣﻲﻛﻨﻴﻢ
w
-٩ﺳﻄﺮ ﺳﻪ ﺭﺍ ﻳﻚ ﻣﻲﻛﻨﻴﻢ
-١١ﺳﺘﻮﻧﻬﺎ ﺭﺍ ﭼﻚ ﻣﻲﻛﻨﻴﻢ
ﺩﺭﻣﺮﺍﺣﻞ ﺑﺎﻻﺩﺭﺻﻮﺭﺕ ﻓﺸﺮﺩﻩ ﺷﺪﻥ ﻫﺮﻛﻠﻴﺪ ﻫﻨﮕﺎﻡ ﭼﻚ ﻛﺮﺩﻥ ﺳﺘﻮﻧﻬﺎ ﺳﺘﻮﻥ ﻣﺮﺑﻮﻁ ﺑﻪ ﺁﻥ ﺻﻔﺮ
r
.i
ﺧﻮﺍﻫﺪ ﺑﻮﺩ.
s
ﺑﻌﻨﻮﺍﻥ ﻣﺜﺎﻝ ﻓﺮﺽ ﻛﻨﻴﺪ ﻛﻠﻴﺪﻱ ﺩﺭ ﺳﻄﺮ ﺩﻭﻡ ،ﺳﺘﻮﻥ ﺳﻮﻡ ﺯﺩﻩ ﺷﺪﻩ ﺍﺳﺖ ،ﺑﻌﺪﺍﺯ ﺻﻔﺮﻛﺮﺩﻥ ﺳﻄﺮ
r
e
ﺩﻭﻡ ﻭﭼﻚ ﻛﺮﺩﻥ ﺳﺘﻮﻧﻬﺎ ﺳﺘﻮﻥ ﺳﻮﻡ ﺻﻔﺮ ﺧﻮﺍﻫﺪﺑﻮﺩ ﭘﺲ ﺑﻪ ﻣﺤﻞ ﻣﺮﺑﻮﻁ ﺑﻪ ﺁﻥ ﭘﺮﺵ ﻣﻲﻧﻤﺎﺋﻴﻢ.
k
a
ﺣﺎﻝ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻣﻄﺎﻟﺐ ﮔﻔﺘﻪ ﺷﺪﻩ ﺑﻪ ﺣﻞ ﻳﻚ ﺗﻤﺮﻳﻦ ﻣﻲﭘﺮﺩﺍﺯﻳﻢ.
lM
o
tr
n
o
.C
w
w
w
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ):(٩
ﺑﺮﻧﺎﻣﻪﺍﻱ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺍﺑﺘﺪﺍ ﺻﻔﺤﻪ ﻛﻠﻴﺪ ﭼﻚ ﺷﻮﺩ ﻭﻫﺮ ﻛﻠﻴﺪﻱ ﻛﻪ ﺍﻧﺘﺨﺎﺏ ﺷﺪ ﻣﺘﻨﺎﻇﺮ ﺑﺎﻳﻨﺮﻱ
r
ﺁﻥ ﻛﻠﻴﺪ ﺑﺮ ﺭﻭﻱ ﭘﻮﺭﺕ ﻳﻚ ﻣﺸﺨﺺ ﺷﻮﺩ.
.i
s
ﺑﺮﺍﻱ ﺣﻞ ﺍﻳﻦ ﺗﻤﺮﻳﻦ ﺍﺑﺘﺪﺍ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺩﺳﺘﻮﺭ EQUﺗﻤﺎﻣﻲ ﺳﻄﺮﻫﺎ ﻭﺳﺘﻮﻥﻫﺎ ﺭﺍ ﺑﺎ ﭘﻴﻨﻲ ﻛﻪ
r
e
ﺑﻪ ﺁﻥ ﻣﺘﺼﻞ ﻫﺴﺘﻨﺪ ﻣﺸﺨﺺ ﻣﻲﻛﻨﻴﻢ.
k
a
ROW1 EQU P2.7
ROW2 EQU P2.6
lM
ROW3 EQU P2.5
ROW4 EQU P2.4
COL1 EQU P2.3
COL2 EQU P2.2
o
MAIN:
CALLKEYSCAN
o
MOV P1,KEYBUF
.C
JMP MAIN
w
KEYSCAN:
MOV P2,#0FFH
CLR ROW1
w
JNB COL1,KEY1
ﺑﺮﺭﺳﻲ ﺳﺘﻮﻥ ﺍﻭﻝ
w
JNB COL2,KEY2
ﺑﺮﺭﺳﻲ ﺳﺘﻮﻥ ﺩﻭﻡ
JNB COL3,KEY3
ﺑﺮﺭﺳﻲ ﺳﺘﻮﻥ ﺳﻮﻡ
SETB ROW1
ﺑﺮﮔﺮﺩﺍﻧﺪﻥ ﺳﻄﺮ ﺻﻔﺮ ﺷﺪﻩ ﺑﻪ ﺣﺎﻟﺖ ﺍﻭﻝ
CLR ROW2
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ، ﺗﻮﻟﯿﺪ،ﻃﺮاﺣﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
r
.ﺍﮔﺮ ﺳﻄﺮ ﺍﻭﻝ ﺻﻔﺮ ﺷﺪ ﺑﻪ ﻣﻨﺰﻟﻪ ﻓﺸﺮﺩﻩ ﺷﺪﻥ ﻛﻠﻴﺪﻱ ﺩﺭ ﺳﻄﺮ ﺩﻭﻡ ﻭ ﺳﺘﻮﻥ ﺩﻭﻡ ﺍﺳﺖ
JNB COL2,KEY5
.i
JNB COL3,KEY6
SETB ROW2
s
CLR ROW3
r
JNB COL1,KEY7
e
JNB COL2,KEY8
JNB COL3,KEY9
k
SETB ROW3
CLR ROW4
a
JNB COL3,KEYNUMBER
lM
JNB COL2,KEY0
JNB COL1,KEYSTAR
JMP KEYSCAN
KEY1:
o
MOV KEYBUF,#01H
RET
tr
KEY2:
MOV KEYBUF,#02H
n
RET
KEY3:
o
MOV KEYBUF,#03H
RET
.C
KEY4:
MOV KEYBUF,#04H
RET
w
KEY5:
MOV KEYBUF,#05H
w
RET
KEY6:
MOV KEYBUF,#06H
w
RET
KEY7:
MOV KEYBUF,#07H
RET
KEY8:
MOV KEYBUF,#08H
RET
KEY9:
MOV KEYBUF,#09H
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
RET
KEY0:
MOV KEYBUF,#0H
RET
r
KEYSTAR:
MOV KEYBUF,#0AAH
.i
RET
s
KEYNUMBER:
MOV KEYBUF,#55H
r
RET
e
END
k
a
lM
o
tr
n
o
.C
w
w
w
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
ﺑﺎ ﻣﻄﺎﻟﻌﻪ ﺍﻳﻦ ﺑﺨﺶ ﺷﻤﺎ ﻣﻲﺗﻮﺍﻧﻴﺪ ﻣﻮﺗﻮﺭﻫﺎﻱ ﭘﻠﻪﺍﻱ ﭼﻬﺎﺭ ﻓﺎﺯ ﺭﺍ ﺭﺍﻩﺍﻧﺪﺍﺯﻱ
r
.i
ﻧﻤﺎﺋﻴﺪ.
s
r
ﻳﻚ ﻣﻮﺗﻮﺭ ﭘﻠﻪﺍﻱ ﭼﻬﺎﺭ ﻓﺎﺯ ﺍﺯ ﭼﻬﺎﺭ ﺳﻴﻢﭘﻴﭻ ﺗﺸﻜﻴﻞ ﺷﺪﻩ ﺍﺳﺖ ﻛﻪ ﺍﺯ ﻳﻚ
e
ﺳﺮ ﻣﺸﺘﺮﻙ ﺷﺪﻩ ﺍﻧﺪ.
k
a
ﺍﻟﺒﺘﻪ ﺗﻮﺟﻪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ ﺍﻳﻦ ﺍﻣﻜﺎﻥ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﺳﺮ ﺳﻴﻢﭘﻴﭻﻫﺎ ﺩﻭﺑﻪﺩﻭ ﺑﺎﻫﻢ ﻣﺸﺘﺮﻙ ﺷﺪﻩ
lM
ﺑﺎﺷﻨﺪﻛﻪ ﻣﻲﺗﻮﺍﻥ ﮔﻔﺖ ﺳﻴﻢﻫﺎﻱ ﺧﺮﻭﺟﻲ ﻳﻚ ﻣﻮﺗﻮﺭ ﭼﻬﺎﺭ ﻓﺎﺯ ﭘﻨﺞ ﻳﺎ ﺷﺶ ﺭﺷﺘﻪ ﻣﻲﺑﺎﺷﻨﺪ.
o
tr
n
o
.C
w
w
w
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
ﺟﻬﺖ ﺭﺍﻩﺍﻧﺪﺍﺯﻱ ﻳﻚ ﻣﻮﺗﻮﺭ ﭘﻠﻪ ﺍﻱ ﺷﻤﺎ ﻣﻲﺗﻮﺍﻧﻴﺪ ﺳﺮ ﻣﺸﺘﺮﻙ ﺭﺍ ﺑﻪVCCﻣﺘﺼﻞ ﻧﻤﺎﻳﻴﺪ ﻭﺑﺎ
r
.ﺯﻣﻴﻦ ﻛﺮﺩﻥ ﺳﺮ ﺳﻴﻢﭘﻴﭻﻫﺎ ﺑﻪ ﺗﺮﺗﻴﺐ ﺯﻳﺮ ﺁﻥﺭﺍ ﺩﺭ ﺟﻬﺖ ﺩﻟﺨﻮﺍﻩ ﺑﻪ ﺣﺮﻛﺖ ﺩﺭ ﺁﻭﺭﻳﺪ.
.i
s
r
e
k
a
lM
o
tr
n
ﺑﻪ ﺍﻳﻦ ﻧﻜﺘﻪ ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﻛﻪ ﻣﻴﻜﺮﻭ ﺑﻪ ﺗﻨﻬﺎﻳﻲ ﻧﻤﻲﺗﻮﺍﻧﺪ ﺟﺮﻳﺎﻥ ﻭ ﻭﻟﺘﺎﮊ ﻻﺯﻡ ﺭﺍ ﺑﺮﺍﻱ ﻣﻮﺗﻮﺭ
o
ﺗﺄﻣﻴﻦ ﻧﻤﺎﻳﺪ ﺑﻪ ﻫﻤﻴﻦ ﺩﻟﻴﻞ ﺍﺯ ﺗﺮﺍﻧﺰﻳﺴﺘﻮﺭﻫﺎﻱ ﻗﺪﺭﺕ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩﻩﺍﻳﻢ ﻛﻪ ﻋﻤﻞ Notﺭﺍ ﻧﻴﺰ ﺩﺭ
.C
ﺧﺮﻭﺟﻲﻫﺎ ﺍﻋﻤﺎﻝ ﻣﻲﻧﻤﺎﻳﺪ ،ﺩﺭ ﻣﺠﻤﻮﻉ ﺑﺎ ﻳﻚ ﻛﺮﺩﻥ ﺑﻴﺲ ﻫﺮ ﺗﺮﺍﻧﺰﻳﺴﺘﻮﺭ ﻣﻄﺎﺑﻖ ﺷﻜﻞ ﻛﻠﻜﺘﻮﺭ ﺁﻥ ﺑﻪ
w
r
.i
s
r
e
k
a
lM
ﭼﻮﻥ ﺳﺮ ﻣﺸﺘﺮﻙ ﺳﻴﻢﭘﻴﭻﻫﺎ ﻧﻴﺰ VCCﺷﺪﻩﺍﻧﺪ ﺍﻃﺮﺍﻑ ﺳﻴﻢﭘﻴﭻ ﺍﻧﺘﺨﺎﺏ ﺷﺪﻩ ﻣﻴﺪﺍﻥ ﻣﻐﻨﺎﻃﻴﺴﻲ
ﺍﻳﺠﺎﺩ ﻣﻲﮔﺮﺩﺩ ﻛﻪ ﺑﺎﻋﺚ ﺟﺬﺏ ﺭﻭﺗﻮﺭ ﻣﻲﺷﻮﺩ ﻭ ﺑﻪ ﻫﻤﻴﻦ ﻃﺮﻳﻖ ﻣﻲﺗﻮﺍﻥ ﺩﺭ ﻳﻚ ﻣﻮﺗﻮﺭ ﺣﺮﻛﺖ
o
tr
ﺍﻳﺠﺎﺩ ﻧﻤﻮﺩ.
n
ﭼﻨﺎﻧﭽﻪ ﺷﻤﺎ ﻫﻤﻮﺍﺭﻩ ﺑﺘﺮﺗﻴﺐ ﺩﻭ ﻓﺎﺯ ﻛﻨﺎﺭ ﻫﻢ ﺭﺍ ﺩﺭ ﻣﻮﺗﻮﺭ ﻓﻌﺎﻝ ﺳﺎﺯﻳﺪ ﺭﻭﺗﻮﺭ ﺗﺤﺖ ﺗﺎﺛﻴﺮ
o
ﺑﺮﺁﻳﻨﺪ ﺩﻭ ﻣﻴﺪﺍﻥ ﺍﺯ ﻃﺮﻑ ﺳﻴﻢﭘﻴﭻﻫﺎ ﻗﺮﺍﺭ ﺧﻮﺍﻫﺪ ﮔﺮﻓﺖ ﺩﺭ ﻧﺘﻴﺠﻪ ﻣﻮﺗﻮﺭ ﺑﺎ ﻗﺪﺭﺕ ﺑﻴﺸﺘﺮﻱ ﺩﻭﺭﺍﻥ
.C
ﺧﻮﺍﻫﺪ ﻛﺮﺩ.
w
ﺩﺭ ﺟﺪﻭﻝ ﺯﻳﺮ ﻣﻘﺎﺩﻳﺮﻱ ﺭﺍ ﻛﻪ ﺳﻴﻢﭘﻴﭻﻫﺎﻱ ﻣﻮﺗﻮﺭ ﭘﻠﻪﺍﻱ ﺑﺮﺍﻱ ﺑﻪ ﺣﺮﻛﺖ ﺩﺭ ﺁﻣﺪﻥ ﺍﺣﺘﻴﺎﺝ
w
ﭘﻠﻪ ﺳﻴﻢ ﭘﻴﭻ A ﺳﻴﻢ ﭘﻴﭻ B ﺳﻴﻢ ﭘﻴﭻ C ﺳﻴﻢ ﭘﻴﭻ D
ﺩﺭ ﺟﻬﺖ 1 0 0 1 ﺧﻼﻑ
١
1 1 0 0 ﺟﻬﺖ
٢
ﺎ
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
r
.i
ﺗﻮﺟﻪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ ﻛﻪ ﻣﻲﺗﻮﺍﻥ ﺍﺯ ﻫﺮ ﻳﻚ ﺍﺯ ﭘﻠﻪ ﻫﺎﻱ ﺟﺪﻭﻝ ﺑﺎﻻ ﺷﺮﻭﻉ ﻛﺮﺩ ﻭﻟﻲ ﺑﻪ ﻣﺤﺾ
s
ﺷﺮﻭﻉ ﺑﺎﻳﺪ ﺗﺮﺗﻴﺐ ﺭﻋﺎﻳﺖ ﺷﻮﺩ.
r
e
k
a
lM
o
tr
n
o
.C
w
w
w
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
r
MAIN:
.i
MOV A,#66H
BACK:
s
RR A
r
MOV P1,A
e
CALL DELAY
k
JNB P3.5,LEFT
JMP BACK
a
lM
DELAY:
MOV R7,#4
LDK:
ﺩﺭ ﺍﻳﻦ ﻗﺴﻤﺖ ﻳﻚ ﺗﺄﺧﻴﺮ ٢٠٠ﻣﻴﻠﻲ ﺛﺎﻧﻴﻪ ﺍﻳﺠﺎﺩ ﻣﻲﺷﻮﺩ.
o
MOV TH0,#3CH
tr
MOV TL0,#0B0H
MOV TMOD,#01H
SETB TR0
n
LOOPDELAY:JNB TF0,LOOPDELAY
CLR TR0
o
CLR TF0
.C
DJNZ R7,LDK
RET
w
END
w
w
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
.
r
ﺑﺮﻧﺎﻣﻪﺍﻱ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺑﺎ ﻓﺸﺎﺭ ﺩﺍﺩﻥ P3.3ﻣﻮﺗﻮﺭ ﺭﺍﺳﺖﮔﺮﺩ ﻭﺑﺎﻓﺸﺎﺭ ﺩﺍﺩﻥ ﻛﻠﻴﺪ P3.5ﻣﻮﺗﻮﺭ ﭼﭙﮕﺮﺩ
.i
s
ﺑﭽﺮﺧﺪ.
r
ORG 00H
e
KEYSCAN:
JNB P3.3,RIGHT
k
JNB P3.5,LEFT
a
JMP KEYSCAN
lM
RIGHT:
MOV A,#66H
BACK:
o
RR A
tr
MOV P1,A
CALL DELAY
JNB P3.5,LEFT
n
JMP BACK
o
.C
LEFT:
MOV A,#66H
BACK:
w
RL A
MOV P1,A
w
CALL DELAY
JNB P3.3,RIGHT
w
JMP BACK
DELAY:
MOV R7,#4
LDK:
ﺩﺭ ﺍﻳﻦ ﻗﺴﻤﺖ ﻳﻚ ﺗﺄﺧﻴﺮ ٢٠٠ﻣﻴﻠﻲ ﺛﺎﻧﻴﻪ ﺍﻳﺠﺎﺩ ﻣﻲﺷﻮﺩ.
MOV TH0,#3CH
MOV TL0,#0B0H
MOV TMOD,#01H
SETB TR0
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
LOOPDELAY:JNB TF0,LOOPDELAY
CLR TR0
CLR TF0
DJNZ R7,LDK
r
RET
END
.i
s
r
e
k
a
lM
o
tr
n
o
.C
w
w
w
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
ﻳﺎﺩﺩﺍﺷﺖ:
r
.i
s
r
e
k
a
lM
o
tr
n
o
.C
w
w
w
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
7SEGMENT
7SEGMENTﺍﺯ ﺗﺮﻛﻴﺐ ﻫﻔﺖ LEDﺳﺎﺧﺘﻪ ﺷﺪﻩ ﺍﺳﺖ ﻛﻪ LEDﻫﺎ ﺑﻪ ﺻﻮﺭﺕ ﻣﻨﻈﻢ ﭼﻴﺪﻩ
r
.i
ﺷﺪﻩﺍﻧﺪ ﻛﻪ ﺁﻥﻫﺎ ﺭﺍ ﺑﺎ ﺣﺮﻭﻑ ﻻﺗﻴﻦ ﻣﺸﺨﺺ ﻛﺮﺩﻩﺍﻳﻢ .ﺟﻬﺖ ﻧﻤﺎﻳﺶ ﻋﺪﺩ
s
r
ﻣﻮﺭﺩ ﻧﻈﺮ ﻗﺴﻤﺖﻫﺎﻱ ﻣﺨﺘﻠﻒ ﻣﻲﺑﺎﻳﺴﺖ ﺍﻧﺘﺨﺎﺏ ﺷﻮﻧﺪ.
e
ﺑﺮﺍﻱ ﻧﻤﺎﻳﺶ ﻋﺪﺩ 5ﻣﻲﺑﺎﻳﺴﺖ ﺣﺮﻭﻑ a, f, g, c, d ﻣﺜﺎل:
k
a
ﻫﻤﮕﻲ ﺭﻭﺷﻦ ﺷﻮﻧﺪ.
lM
ﺗﻮﺟﻪ :ﺍﻟﺒﺘﻪ 7segmentﻫﺎ ﺁﻧﺪ ﻭ ﻳﺎ ﻛﺎﺗﺪ LEDﺁﻥﻫﺎ ﺑﺴﺘﻪ ﺑﻪ ﻧﻮﻉ segmentﻣﺸﺘﺮﻙ ﺷﺪﻩﺍﻧﺪ ﻛﻪ ﺩﺭ ﺑﺮﺩ
o
ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩﻳﻢ ﻛﻪ ﺷﻤﺎ ﺑﺎ ﻗﺮﺍﺭﺩﺍﺩﻥ ﻋﺪﺩ ﺧﻮﺩ ﺑﻪ ﺻﻮﺭﺕ BCDﺑﺮ ﺭﻭﻱ P2ﻣﺒﺪﻝ ﻓﻮﻕ ﻛﻪ ﺍﺯ IC
o
.C
7447ﺍﺳﺘﻔﺎﺩﻩ ﺷﺪﻩ ﺍﺳﺖ ﺁﻥ ﺭﺍ ﺭﻭﻱ 7SEGMENTﺧﻮﺍﻫﻴﺪ ﺩﻳﺪ .ﺑﺮﺍﻱ ﺩﺍﺷﺘﻦ ﺗﻌﺪﺍﺩ ﺭﻗﻢﻫﺎﻱ ﺑﻴﺸﺘﺮ
w
ﺩﺭ 7SEGMENTﻣﻲﺗﻮﺍﻥ ﭼﻨﺪ 7SEGMENTﺭﺍ ﺑﻪ ﺻﻮﺭﺕ ﻣﺎﻟﺘﻲ ﭘﻠﻜﺲ ﺷﺪﻩ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ ،ﺑﺪﻳﻦ
w
ﻼ a1ﺑﻪ
ﺻﻮﺭﺕ ﻛﻪ ﺗﻤﺎﻡ ﻗﺴﻤﺖﻫﺎ ﻳﻚ 7SEGMENTﺑﻪ 7SEGMENTﺑﻌﺪﻱ ﻧﻴﺰ ﻣﺘﺼﻞ ﺍﺳﺖ ﻣﺜ ﹰ
w
a2ﻭ ﺑﻪ a3ﻭ...
ﺣﺎﻝ ﺍﮔﺮ ﻣﺎ ﭘﺎﻳﻪ ﻣﺸﺘﺮﻙ ﺁﻥﻫﺎ ﺭﺍ )ﺩﺭ ﺑﺮﺩ ﺁﻣﻮﺯﺷﻲ ﺁﻧﺪ( ﻧﻴﺰ ﻭﺻﻞ ﻛﻨﻴﻢ ﺑﻪ ﺻﻮﺭﺕ ﻫﻤﺰﻣﺎﻥ
ﻫﻤﻪ segment٧ﻫﺎ ﻳﻚ ﻋﺪﺩ ﺭﺍ ﻧﻤﺎﻳﺶ ﻣﻲﺩﻫﻨﺪ ﺍﮔﺮ ﺑﻪ ﺻﻮﺭﺕ ﻣﻨﻈﻢ ﻭ ﺑﺮﻧﺎﻣﻪﺭﻳﺰﻱ ﺩﻗﻴﻖ ﺁﻧﺪﻫﺎ
ﺍﻧﺘﺨﺎﺏ ﺷﻮﻧﺪ ﺷﻤﺎ ﺧﻮﺍﻫﻴﺪ ﺗﻮﺍﻧﺴﺖ ﺭﻗﻢ ﺩﻟﺨﻮﺍﻩ ﺧﻮﺩ ﺭﺍ ﻧﻤﺎﻳﺶ ﺩﻫﻴﺪ.
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
ﺩﺭ ﺑﺮﺩ ﺁﻣﻮﺯﺷﻲ ﺁﻧﺪﻫﺎ ﺑﻪ P1.4ﻭ P1.5ﻣﺘﺼﻞ ﺷﺪﻩﺍﻧﺪ ﭘﺲ ﺍﮔﺮ ﻋﺪﺩ 15Hﺭﺍ ﺭﻭﻱ P1ﺑﺮﻳﺰﻳﻢ
ﻣﺸﺎﻫﺪﻩ ﺧﻮﺍﻫﻴﺪ ﻛﺮﺩ .ﻋﺪﺩ ٥ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﻣﻲﺷﻮﺩ ﻭ ﻋﺪﺩ ﻳﻚ ﺭﻭﺷﻦ ﻛﻨﻨﺪﻩ ﺁﻧﺪ 7segmentﺳﻤﺖ
r
.i
ﺭﺍﺳﺘﻲ ﺍﺳﺖ.
s
r
e
k
a
lM
o
tr
n
o
.C
w
w
w
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
r
ﺑﺮﻧﺎﻣﻪ ﺯﻳﺮ ﻋﺪﺩ ٣ﺭﺍ ﺩﺭ ﺭﻗﻢ ﺍﻭﻝ ﻧﻤﺎﻳﺶ ﻣﻲﺩﻫﺪ.
.i
MAIN:
MOV P1,#13H
s
LOOP:JMP LOOP
r
END
e
ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ ) :(١٣ﺑﺮﻧﺎﻣﻪ ﺯﻳﺮ ﻋﺪﺩ ٤ﺭﺍ ﺩﺭ ﺭﻗﻢ ﺩﻭﻡ ﻧﻤﺎﻳﺶ ﻣﻲﺩﻫﺪ.
k
MAIN:
a
MOV P1,#24H
LOOP: JMP LOOP
lM
END
ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ ) :(١٤ﺑﺮﻧﺎﻣﻪ ﺯﻳﺮ ﻋﺪﺩ 34ﺭﺍ ﺭﻭﻱ 7SEGMENTﻧﻤﺎﻳﺶ ﻣﻲﺩﻫﺪ.
MAIN:
o
MOV P1,#13H
NOP
tr
MOV P1,#24H
JMP MAIN
n
END
ﺩﺭ ﻣﺜﺎﻝ ﺑﺎﻻ ﺑﻪ ﺍﻳﻦ ﺩﻟﻴﻞ ﻛﻪ ﺳﺮﻳﻌﹶﺎ ﻋﺪﺩ ٣ﻭ ٤ﺭﻭﻱ 7SEGMENTﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﻣﻲﺷﻮﺩ ﻭ
o
ﻫﻤﭽﻨﻴﻦ ﺑﺎ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻦ ﺧﻄﺎﻱ ﺩﻳﺪ ،ﭼﺸﻢ ،ﺑﻴﻨﻨﺪﻩ ﻋﺪﺩ 34ﺭﺍ ﻣﺸﺎﻫﺪﻩ ﻣﻲﻛﻨﺪ.
.C
w
w
w
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
ﺷﺎﻳﺪ ﺍﻳﻦ ﺳﻮﺍﻝ ﺑﺮﺍﻱ ﺷﻤﺎ ﭘﻴﺶ ﺁﻳﺪ ﻛﻪ ﺍﮔﺮ ﻋﺪﺩ ﻣﺎ ﻳﻚ ﻋﺪﺩ ﺛﺎﺑﺖ ﻧﺒﻮﺩ ﻭ ﺑﻪ ﻃﻮﺭ ﻣﺪﺍﻭﻡ ﺗﻐﻴﻴﺮ
ﻛﻨﺪ ﭼﮕﻮﻧﻪ ﻣﻲﺗﻮﺍﻥ ﺍﻳﻦ ﻋﺪﺩ ﺭﺍ ﻧﻤﺎﻳﺶ ﺩﺍﺩ .ﺩﺭ ﺍﻳﻦﺻﻮﺭﺕ ﻣﻲﺑﺎﻳﺴﺖ ﻫﺮ ﺭﻗﻢ ﺭﺍ ﺩﺍﺧﻞ ﻳﻚ ﺑﺎﻳﺖ
r
ﺭﻳﺨﺘﻪ ﻭ ﺗﻚﺗﻚ ﺁﻥﻫﺎ ﺭﺍ ﺭﻭﻱ 7SEGMENTﺍﻧﺘﻘﺎﻝ ﺩﻫﻴﻢ.
.i
s
SHOW:
r
MOV A,VALUE
e
MOV B,10
DIV AB
k
ADD A,#10H
a
MOV P1,A
CALL DELAY
lM
ADD B,#20H
MOV P1,B
CALL DELAY
o
JMP SHOW
tr
n
o
.C
w
w
w
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
r
.i
ﻭﻗﻔﻪﻫﺎ
s
r
ﻭﻗﻔﻪ ﻳﻜﻲ ﺍﺯ ﻣﺒﺎﺣﺚ ﺍﺳﺎﺳﻲ ﺩﺭ ﻣﻴﻜﺮﻭﻛﻨﺘﺮﻭﻟﺮﻫﺎ ﺍﺳﺖ ﻛﻪ ﺍﺣﺘﻴﺎﺝ ﺑﻪ ﺗﻮﺟﻪ ﻭﻳﮋﻩﺍﻱ ﺩﺍﺭﺩ.
e
k
ﺩﺭ ﺍﺑﺘﺪﺍ ﺑﺎﻳﺪ ﻭﻗﻔﻪ ﺭﺍ ﺗﻌﺮﻳﻒ ﻛﺮﺩ .ﻣﻲﺗﻮﺍﻥ ﮔﻔﺖ ﻛﻪ ﻭﻗﻔﻪ ﻳﻌﻨﻲ ﺩﺭﺧﻮﺍﺳﺖ ﺍﺯ .CPUﺑﺎ ﺗﻮﺟﻪ
a
ﺑﻪ ﺍﻳﻦ ﺗﻌﺮﻳﻒ ﻣﻲﺗﻮﺍﻥ ﻓﻬﻤﻴﺪ ﻛﻪ ﻭﻗﻔﻪ ﺑﺮﺍﻱ ﺍﻧﺠﺎﻡ ﻋﻤﻠﻲ ﻭﺍﺭﺩ ﻣﻲﺷﻮﺩ .ﻫﻨﮕﺎﻡ ﻭﺍﺭﺩ ﺷﺪﻥ ﻳﻚ ﻭﻗﻔﻪ
lM
-٤ﺑﻌﺪ ﺍﺯ ﺍﻧﺠﺎﻡ ﺑﺮﻧﺎﻣﻪ ﻣﻮﺭﺩ ﻧﻈﺮ ﺑﻪ ﻣﻜﺎﻥ ﺍﻭﻟﻴﻪ ﻗﺒﻞ ﺍﺯ ﻭﺍﺭﺩ ﺷﺪﻥ ﺑﻪ ﻭﻗﻔﻪ ﺑﺮﻣﻲﮔﺮﺩﺩ ﻭ ﻛﺎﺭ ﺭﺍ
w
ﺍﺩﺍﻣﻪ ﻣﻲﺩﻫﺪ.
w
ﺩﺭ ﺑﺎﻻ ﺷﺮﺍﻳﻄﻲ ﺭﺍ ﻛﻪ ﺑﺎﻋﺚ ﻭﺍﺭﺩ ﺷﺪﻥ ﻭﻗﻔﻪ ﺑﻪ CPUﻣﻲﺷﻮﺩ ﻣﺸﺨﺺ ﺷﺪﻩﺍﺳﺖ ،ﺣﺎﻝ ﺑﺎﻳﺪ
r
.i
ﺑﺪﺍﻧﻴﻢ ﻫﻨﮕﺎﻡ ﻭﺍﺭﺩ ﺷﺪﻥ ﻫﺮ ﻭﻗﻔﻪ ﭼﻪ ﺍﺗﻔﺎﻗﻲ ﻣﻲﺍﻓﺘﺪ.
s
ﺩﺭ ﻫﻨﮕﺎﻡ ﻭﺍﺭﺩ ﺷﺪﻥ ﻫﺮ ﻭﻗﻔﻪ CPUﺑﻪ ﺧﺎﻧﻪ ﺧﺎﺻﻲ ﺍﺯ ﺣﺎﻓﻈﻪ )ﺩﺭ ﺟﺪﻭﻝ ﺯﻳﺮ ﺁﺩﺭﺱ ﺍﻳﻦ
r
e
ﻧﻘﺎﻁ ﮔﻔﺘﻪ ﺷﺪﻩ ﺍﺳﺖ( ﭘﺮﺵ ﻣﻲﻛﻨﺪ ﻭ ﺑﺮﻧﺎﻣﻪ ﺍﺯ ﺁﻥ ﺧﺎﻧﻪ ﺍﺩﺍﻣﻪ ﻣﻲﻳﺎﺑﺪ ﻭ ﺗﺎ ﺯﻣﺎﻧﻲ ﻛﻪ ﺑﻪ ﺩﺳﺘﻮﺭ
k
RETIﻧﺮﺳﻴﺪﻩ CPU ،ﺑﺮﻧﺎﻣﻪ ﺭﺍ ﺍﺟﺮﺍ ﻣﻲﻛﻨﺪ ﺑﻪ ﻣﺤﺾ ﺭﺳﻴﺪﻥ ﺑﻪ ﺩﺳﺘﻮﺭ CPU ، RETIﺑﻪ ﻣﺤﻠﻲ
a
lM
ﻛﻪ ﻭﻗﻔﻪ ﻭﺍﺭﺩ ﺷﺪﻩ ﺑﻮﺩ ﺑﺎﺯﮔﺸﺘﻪ ﻭ ﺍﺩﺍﻣﻪ ﻛﺎﺭ ﺧﻮﺩ ﺭﺍ ﺍﻧﺠﺎﻡ ﻣﻲﺩﻫﺪ ﺣﺎﻝ ﻛﺎﻓﻲ ﺍﺳﺖ ﺷﻤﺎ ﺑﺎ ﺩﺭ ﻧﻈﺮ
ﮔﺮﻓﺘﻦ ﺟﺪﻭﻝ ﺯﻳﺮ ﺑﺮﻧﺎﻣﻪﺍﻱ ﺭﺍ ﻛﻪ ﺑﺎﻳﺪ ﺩﺭ ﻫﻨﮕﺎﻡ ﻭﺍﺭﺩ ﺷﺪﻥ ﻭﻗﻔﻪ ﺍﺟﺮﺍ ﺷﻮﺩ ﺩﺭ ﻣﺤﻞ ﺧﺎﺹ ﺣﺎﻓﻈﻪ
o
tr
ﺑﻨﻮﻳﺴﻴﺪ.
n
IE
EA NU ET2 ES ET1 EX1 ET0 EX0
o
.C ﺍﺳﺘﻔﺎﺩﻩ ﻧﺸﺪﻩ
ﻓﻌﺎﻝ ﺳﺎﺯ
2BH
1BH
0BH
23H
13H
03H
ﻛﻠﻲ
w
ﺗﺎﻳﻤﺮ ١
89C52 ﺳﺮﻳﺎﻝ ﻳﻚ ﺻﻔﺮ ﺻﻔﺮ
w
ﺑﺎﻳﺖ IEﺟﻬﺖ ﻣﺸﺨﺺ ﻧﻤﻮﺩﻥ ﻭ ﻓﻌﺎﻝ ﻛﺮﺩﻥ ﻭﻗﻔﻪ ﻣﻮﺭﺩ ﻧﻈﺮ ﺑﻪ ﻛﺎﺭ ﻣﻲﺭﻭﺩ ﻛﺎﻓﻲ ﺍﺳﺖ ﺷﻤﺎ
ﺑﻴﺖ ﻧﻈﻴﺮ ﻭﻗﻔﻪ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﺭﺍ ﻫﻤﺮﺍﻩ ﺑﻴﺖ EAﻓﻌﺎﻝ ﻛﻨﻴﺪ.
ﻣﺜﺎل :ﭼﻪ ﻋﺪﺩﻱ ﺭﺍ ﻣﻲﺑﺎﻳﺴﺖ ﺩﺭ IEﺑﺎﺭﮔﺬﺍﺭﻱ ﻛﺮﺩ ﻛﻪ ﻭﻗﻔﻪ ﺻﻔﺮ ﺧﺎﺭﺟﻲ ﻓﻌﺎﻝ ﺷﻮﺩ؟
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
IE
EA NU ET2 ES ET1 EX1 ET0 EX0
r
1 0 0 0 0 0 0 1
.i
8 1
s
MOV IE,#81H
r
e
k
ﺑﺮﺍﻱ ﺍﻭﻟﻴﻦ ﻣﺜﺎﻝ ﺍﺯ ﻭﻗﻔﻪ ﺧﺎﺭﺟﻲ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻛﻨﻴﻢ .ﭘﺎﻳﻪﻫﺎﻱ ١٢ﻭ ١٣ﺩﺭ ﺭﻭﻱ ﭘﻮﺭﺕ ﺳﻪ ﻗﺮﺍﺭ
a
ﺩﺍﺭﻧﺪ ﻛﻪ ﻫﻤﺎﻥ ﮔﻮﻧﻪ ﻛﻪ ﻗﺒﻼ ﮔﻔﺘﻪ ﺷﺪ ﺑﺮﺍﻱ ﻛﺎﺭ ﻫﺎﻱ ﺧﺎﺹ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪﻩﺍﻧﺪ.
lM
ﺑﺮﺍﻱ ﺍﻳﻨﻜﻪ ﻳﻚ ﻭﻗﻔﻪ ﺧﺎﺭﺟﻲ ﺭﺥ ﺩﻫﺪ ﺑﺎﻳﺪ ﺩﻭ ﺷﺮﻁ ﺭﻋﺎﻳﺖ ﺷﻮﺩ ﻛﻪ ﺑﺎ ﺩﺍﺷﺘﻦ ﺍﻳﻦ ﺩﻭ ﺷﺮﻁ
o
ﺍﻟﻒ :ﺛﺒﺎﺕ IEﺭﺍ ﻃﻮﺭﻱ ﻣﻘﺪﺍﺭﺩﻫﻲ ﻛﻨﻴﻢ ﻛﻪ ﺣﺪﺍﻗﻞ ﻳﻜﻲ ﺍﺯ ﻭﻗﻔﻪﻫﺎﻱ ﺧﺎﺭﺟﻲ ﻗﺎﺑﻠﻴﺖ ﻓﻌﺎﻝ ﺷﺪﻥ ﺭﺍ
n
o
ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ.
.C
ﺏ :ﺷﺮﻁ ﺩﻭﻡ ﻭﺍﺭﺩ ﺁﻣﺪﻥ ﻳﻚ ﭘﺎﻟﺲ ﺑﻪ ﻳﻜﻲ ﺍﺯ ﭘﺎﻳﻪﻫﺎﻱ ١٢ﻳﺎ ١٣ﺑﺘﺮﺗﻴﺐ ﺑﺮﺍﻱ ﻭﻗﻔﻪ ﺧﺎﺭﺟﻪ ﺻﻔﺮ ﻳﺎ
w
r
ﺻﻔﺮ ﺷﻮﺩ.
.i
s
ORG 0
r
JMP MAIN
e
ORG 03H
k
INTEXTERNAL:
MOV P1,#00H
RETI
a
lM
MAIN:
MOV IE,#81H
o
SETB IT0
tr
SJMP $
END
n
ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﻓﻮﻕ ﺍﺑﺘﺪﺍ ﺑﺎ ﭘﺮﺵ ﺑﻪ MAINﺧﺎﻧﻪ 3Hﻛﻪ ﻣﺮﺑﻮﻁ ﺑﻪ ﻭﻗﻔﻪ ﺧﺎﺭﺟﻲ ﻳﻚ ﺑﻮﺩﻩ ﺭﺍ ﭘﺮﺵ
o
.C
ﻛﺮﺩﻳﻢ ﺗﺎ ﻓﻀﺎﻱ ﺑﺮﻧﺎﻣﻪ ﻭﻗﻔﻪ ﺭﺍ ﺧﺎﻟﻲ ﻧﮕﻪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﻢ ﺩﺭ MAINﻭﻗﻔﻪ ﻣﻮﺭﺩ ﻧﻈﺮ ﻓﻌﺎﻝ ﺷﺪﻩ ﻭ IT0
ﺑﻴﺖ IT0ﻣﺸﺨﺺ ﻛﻨﻨﺪﻩ ﻓﻌﺎﻝﺳﺎﺯﻱ ﻭﻗﻔﻪ ﺧﺎﺭﺟﻲ ﺻﻔﺮ ﺩﺭ ﻟﺒﻪ ﭘﺎﻟﺲ ﻳﺎ ﺳﻄﺢ ﺻﻔﺮ ﭘﺎﻟﺲ
w
w
ﺍﺳﺖ.
ﺷﻤﺎ ﻣﻲﺗﻮﺍﻧﻴﺪ ﺑﺎ ﺯﺩﻥ ﻛﻠﻴﺪ ﻭﻗﻔﻪ ﺭﻭﻱ ﺑﺮﺩ ﺁﻣﻮﺯﺷﻲ ﻳﻚ ﭘﺎﻟﺲ ﺭﻭﻱ ﭘﺎﻳﻪ ١٣ﺍﻳﺠﺎﺩ ﻧﻤﺎﻳﻴﺪ.
r
.i
IT0ﻧﻴﺰ ﻣﺮﺑﻮﻁ ﺑﻪ ﻭﻗﻔﻪ ﺧﺎﺭﺟﻲ ﺻﻔﺮ ﺍﺳﺖ.
s
ﺍﮔﺮ IT=0ﻭﻗﻔﻪ ﺣﺴﺎﺱ ﺑﻪ ﺳﻄﺢ ﺧﻮﺍﻫﺪ ﺑﻮﺩ.
r
e
ﺍﮔﺮ IT=1ﻭﻗﻔﻪ ﺣﺴﺎﺱ ﺑﻪ ﻟﺒﻪ
k
a
ﺣﺎﻝ ﺍﮔﺮ ﺷﻤﺎ ﺑﺎ ﻛﻠﻴﺪ ﺑﺮ ﺭﻭﻱ ﺑﺮﺩ ﺁﻣﻮﺯﺷﻲ ﻳﻚ ﭘﺎﻟﺲ ﺍﻳﺠﺎﺩ ﻧﻤﺎﻳﻴﺪ LEDﻫﺎﻱ ﺭﻭﻱ ﺑﺮﺩ
lM
ﺁﻣﻮﺯﺷﻲ ﺭﻭﺷﻦ ﻣﻲﺷﻮﺩ.
o
ﻭﻗﻔﻪﻫﺎﻯ ﺗﺎﻳﻤﺮ:
tr
ﺑﺮﺍﻱ ﻭﻗﻮﻉ ﻳﻚ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮﻱ ﻫﻢ ﺩﻭ ﺷﺮﻁ ﻻﺯﻡ ﺍﺳﺖ .ﮔﺎﻫﻲ ﺍﻭﻗﺎﺕ ﺍﺣﺘﻴﺎﺝ ﺩﺍﺭﻳﻢ ﻛﻪ ﺍﺗﻔﺎﻕ
o
.C
ﺧﺎﺻﻲ ﺩﺭ ﻓﻮﺍﺻﻞ ﺯﻣﺎﻧﻲ ﻣﻌﻴﻨﻲ ﺭﺥ ﺩﻫﺪ ﺑﺮﺍﻱ ﺍﻳﻨﻜﺎﺭ ﻣﻲﺗﻮﺍﻥ ﺍﺯ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮﻱ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ.
w
ﺍﻟﻒ :ﺛﺒﺎﺕ IEﺭﺍ ﻃﻮﺭﻱ ﻣﻘﺪﺍﺭﺩﻫﻲ ﻛﻨﻴﻢ ﻛﻪ ﺣﺪﺍﻗﻞ ﻳﻜﻲ ﺍﺯ ﻭﻗﻔﻪﻫﺎﻱ ﺗﺎﻳﻤﺮﻱ ﻗﺎﺑﻠﻴﺖ ﻓﻌﺎﻝ ﺷﺪﻥ
w
ﺏ :ﺳﺮﺭﻳﺰ ﺷﺪﻥ ﺗﺎﻳﻤﺮ) .( TF=1ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻣﺪﺕ ﺯﻣﺎﻧﻲ ﻛﻪ ﺩﺭ ﺗﺎﻳﻤﺮ ﺑﺎﺭﮔﺬﺍﺭﻱ ﺷﺪﻩ ﺑﺎ ﺗﻤﺎﻡ
r
ﺑﺮﻧﺎﻣﻪﺍﻱ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻣﻮﺝ ﻣﺮﺑﻌﻲ 8KHzﺭﻭﻱ ﭘﺎﻳﻪ P1.6ﺗﻮﻟﻴﺪ ﻧﻤﺎﻳﺪ.
.i
ORG 0H
s
JMP MAIN
r
ORG 0BH
e
CPL P1.6
k
RETI
a
MAIN:
lM
MOV IE,#82H
MOV TMOD,#02H
MOV TH0,#62
o
SETB TR0
tr
SJMP $
n
END
o
.C
ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﻓﻮﻕ ﺍﺑﺘﺪﺍ ﺑﺎ ﭘﺮﺵ ﺑﻪ MAINﺧﺎﻧﻪﻫﺎﻱ ﺣﺎﻓﻈﻪ ﺭﺍ ﺑﺮﺍﻱ ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪ ﻭﻗﻔﻪ ﺧﺎﻟﻲ
w
ﻧﮕﻪﺩﺍﺷﺘﻴﻢ.
w
ﺛﺒﺎﺕ ﻛﻨﺘﺮﻝ ﻭﻗﻔﻪ ) (IEﺭﺍ ﺑﺎ ﻋﺪﺩ ٨٢ﺟﻬﺖ ﻓﻌﺎﻝﺳﺎﺯﻱ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮ ﺻﻔﺮ ﻭ EAﺑﺎﺭﮔﺬﺍﺭﻱ
w
ﻧﻤﻮﺩﻳﻢ.
ﺟﻬﺖ ﺍﻳﺠﺎﺩ ﻳﻚ ﺷﻜﻞ ﻣﻮﺝ ﻣﺮﺑﻌﻲ ﻛﺎﻓﻲ ﺍﺳﺖ ﺁﻥ ﭘﺎﻳﻪ ﻣﻌﻜﻮﺱ ﺷﻮﺩ ﻭ ﺳﺮﻋﺖ ﻣﻌﻜﻮﺱ
62 µs
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
r
.i
= 1000000/8000ﻣﻘﺪﺍﺭ ﺑﺎﺭﮔﺬﺍﺭﻱ ﺩﺭ ﺗﺎﻳﻤﺮ
s
= 125 µs/ 2 = 62.5 ~ 62 µsﻣﻘﺪﺍﺭ ﺑﺎﺭﮔﺬﺍﺭﻱ ﺩﺭ ﺗﺎﻳﻤﺮ
r
e
k
ﻧﻤﻮﻧﻪ ﺩﻳﮕﺮﻱ ﺍﺯ ﻛﺎﺭﺑﺮﺩ ﻭﻗﻔﻪﻫﺎﻱ ﺗﺎﻳﻤﺮﻱ ﺭﺍ ﺩﺭ ﺗﻤﺮﻳﻦ ﺯﻳﺮ ﻣﺸﺎﻫﺪﻩ ﻣﻲﻓﺮﻣﺎﻳﻴﺪ.
a
lM
ﻧﻤﻮﻧﻪ ﺑﺮﻧﺎﻣﻪ ):(١٧
ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮ ﺑﺮﻧﺎﻣﻪﺍﻱ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺑﺎﻳﺖ SEG1ﻭ SEG2ﺭﺍ ﺭﻭﻱ ﺧﺎﻧﻪ ﺍﻭﻝ ﻭ ﺩﻭﻡ
o
ORG 0H
JMP MAIN
ORG 0BH
w
CLR TR0
MOV TH0,#0ECH
w
MOV TL0,#078H
MOV P1,SEG1
w
SETB P1.4
CALL DELAY
CLR P1.4
MOV P1,SEG2
SETB P1.4
CALL DELAY
CLR P1.4
SETB TR0
RETI
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ، ﺗﻮﻟﯿﺪ،ﻃﺮاﺣﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
MAIN:
MOV IE,#82H
MOV TMOD,#11H
r
MOV TH0,#0ECH
MOV TL0,#78H
.i
SETB TR0
s
SJMP $
r
DELAY:
e
MOV TH1,#0FCH
MOV TL1,#18H
k
SETB TR1
LOOPDELAY:JNB TF1,LOOPDELAY
a
CLR TR1
lM
CLR TF1
RET
END
o
tr
n
o
.C
w
w
w
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
r
.i
ﻛﺮﺩﻳﺪ ﺩﺭ ﺗﻤﺮﻳﻦ ﺯﻳﺮ ﭼﮕﻮﻧﮕﻲ ﺗﻮﻟﻴﺪ ﺩﻭ ﺷﻜﻞ ﻣﻮﺝ ﻣﺨﺘﻠﻒ ﺭﺍ ﺑﻪ ﺻﻮﺭﺕ ﻫﻤﺰﻣﺎﻥ ﻣﺸﺎﻫﺪﻩ ﻣﻲﻛﻨﻴﺪ.
s
ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮ ﺩﻭ ﺷﻜﻞ ﻣﻮﺝ 7KHﻭ 500Hﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ.
r
e
ORG 00H
k
JMP MAIN
ORG 0BH
a
JMP TS0
lM
ORG 1BH
JMP TS1
MAIN:
o
MOV TMOD,#12H
MOV TH0,#-71
tr
SETB TR0
SETB TF1
n
MOV IE,#8AH
SJMP $
o
TS0:
.C
CPL P1.7
RETI
w
TS1:
CLR TR1
w
MOV )TH1,#HIGH(-1000
MOV )TL1,#LOW(-1000
SETB TR1
w
CPL P1.6
RETI
END
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
ﻧﮑﺘﻪ :ﻓﺮﻛﺎﻧﺲﻫﺎﻱ ﺯﻳﺮ 1KHZﺭﺍ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺣﺎﻟﺖ ﻳﻚ ﺗﺎﻳﻤﺮ ﻣﻲﺗﻮﺍﻥ ﺗﻮﻟﻴﺪ ﻛﺮﺩ .ﭘﺲ ﺑﺮﺍﻱ
ﺗﻮﻟﻴﺪ ﺷﻜﻞ ﻣﻮﺝ 7KHZﺍﺯﺣﺎﻟﺖ ﺩﻭ ﺗﺎﻳﻤﺮ ﺻﻔﺮ ﻭ ﺑﺮﺍﻱ ﺗﻮﻟﻴﺪ ﺷﻜﻞ ﻣﻮﺝ 500HZﺍﺯ ﺣﺎﻟﺖ ﻳﻚ،
r
.i
ﺗﺎﻳﻤﺮ ﻳﻚ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻛﻨﻴﻢ.
s
ﻫﻤﺎﻥﮔﻮﻧﻪ ﻛﻪ ﻣﻲﺩﺍﻧﻴﻢ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮ ﻭﻗﺘﻲ ﻓﻌﺎﻝ ﻣﻲﺷﻮﺩ ﻛﻪ ﺩﻭ ﺷﺮﻁ ﺑﺎﺭﮔﺬﺍﺭﻱ ﺻﺤﻴﺢ IEﻭ
r
e
ﺳﺮﺭﻳﺰ ﺷﺪﻥ ﺗﺎﻳﻤﺮ ﺑﻪ ﻭﺟﻮﺩ ﺁﻳﺪ ﺑﻨﺎﺑﺮﺍﻳﻦ ﺑﺮﺍﻱ ﺗﻮﻟﻴﺪ ﻓﺮﻛﺎﻧﺲ 7KHZﺑﻪ ﺭﺍﺣﺘﻲ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻭﻗﻔﻪ
k
a
ﺗﺎﻳﻤﺮ ﺻﻔﺮ ﻭﺣﺎﻟﺖ ﻳﻚ ﺁﻥ ﻣﻲﺗﻮﺍﻥ ﺍﻳﻦ ﻛﺎﺭ ﺭﺍ ﺍﻧﺠﺎﻡ ﺩﺍﺩ.
lM
ﺑﺮﺍﻱ ﺗﻮﻟﻴﺪ ﻓﺮﻛﺎﻧﺲ 500HZﺍﺑﺘﺪﺍ ﺩﺭ ﺁﺩﺭﺱ 1BHﻛﻪ ﻣﺤﻞ ﭘﺮﺵ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮ ﻳﻚ ﺍﺳﺖ
ﺑﺮﻧﺎﻣﻪﺍﻱ ﺑﺮﺍﻱ ﺗﻮﻟﻴﺪ ﺍﻳﻦ ﻣﻮﺝ ﻣﻲﻧﻮﻳﺴﻴﻢ ﻭﺣﺎﻻ ﺑﺮﺍﻱ ﺍﺟﺮﺍ ﺷﺪﻥ ﺍﻳﻦ ﺑﺮﻧﺎﻣﻪ ﻛﺎﻓﻲ ﺍﺳﺖ ﻛﻪ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮ
o
tr
ﻼ ﺍﻧﺠﺎﻡ ﺩﺍﺩﻩﺍﻳﻢ
ﻳﻚ ﺩﻭ ﺷﺮﻁ ﻓﻌﺎﻝ ﺷﺪﻥ ﻭﻗﻔﻪﻫﺎ ﺭﺍ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ .ﺷﺮﻁ ﺑﺎﺭﮔﺬﺍﺭﻱ ﺛﺒﺎﺕ ﻭﻗﻔﻪ ﺭﺍ ﻛﻪ ﻗﺒ ﹰ
n
ﻭ ﺑﺮﺍﻱ ﺍﻳﻨﻜﻪ ﺷﺮﻁ ﺩﻭﻡ TF=1ﺭﺍ ﻓﺮﺍﻫﻢ ﻛﻨﻴﻢ ﺩﺭ ﻗﺴﻤﺖ MAINﺑﺮﻧﺎﻣﻪ ﺍﻳﻦ ﻛﺎﺭ ﺍﻧﺠﺎﻡ ﻣﻲﺩﻫﻴﻢ.
o
ﺑﻨﺎﺑﺮﺍﻳﻦ ﺑﻌﺪ ﺍﺯ ﻫﺮ ﻭﻗﻔﻪ ﻛﻪ ﺗﺎﻳﻤﺮ ﺻﻔﺮ ﺍﻳﺠﺎﺩ ﻣﻲﻛﻨﺪ ﺧﻮﺩ ﺑﻪ ﺧﻮﺩ ﺑﺮﻧﺎﻣﻪ ﺑﻪ TF1=1ﻣﻲﺭﺳﺪ ﻭ ﺑﻪ
.C
ﺁﺩﺭﺱ 1BHﻣﻲﺭﻭﺩ ﻭﺩﺭ ﺁﻧﺠﺎ ﺷﻜﻞ ﻣﻮﺝ 500HZﺭﺍ ﻫﻤﺰﻣﺎﻥ ﺑﺎ ﻓﺮﻛﺎﻧﺲ 7KHZﺍﻳﺠﺎﺩ ﻣﻲﻛﻨﻴﻢ.
w
w
)(MSB )(LSB
- - PT2 PS PT1 PX1 PTO PXO
ﺑﺮﺍﻱ ﺗﻌﻴﻴﻦ ﺳﻄﺢ ﺗﻘﺪّﻡ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮ 2ﺑﻜﺎﺭ ﻣﻲ ﺭﻭﺩ. IP.5 PT2
ﺍﮔﺮ PT2 = 1ﺑﺎﺷﺪ .ﺍﻳﻦ ﻭﻗﻔﻪ ﺩﺭ ﺳﻄﺢ ﺗﻘﺪﻡ ﺑﺎﻻﺗﺮ ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﺩ.
r
.i
ﺑﺮﺍﻱ ﺗﻌﻴﻴﻦ ﺳﻄﺢ ﺗﻘﺪﻡ ﻭﻗﻔﻪ ﺩﺭﮔﺎﻩ ﺳﺮﻳﺎﻝ ﺑﻜﺎﺭ ﻣﻲ ﺭﻭﺩ. IP.4 PS
s
ﺍﮔﺮ PS = 1ﺑﺎﺷﺪ ،ﺍﻳﻦ ﻭﻗﻔﻪ ﺩﺭ ﺳﻄﺢ ﺗﻘﺪﻡ ﺑﺎﻻﺗﺮ ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﺩ.
r
ﺑﺮﺍﻱ ﺗﻌﻴﻴﻦ ﺳﻄﺢ ﺗﻘﺪﻡ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮ 1ﺑﻜﺎﺭ ﻣﻲ ﺭﻭﺩ. IP.3 PT1
e
ﺍﮔﺮ PT1 = 1ﺑﺎﺷﺪ ،ﺍﻳﻦ ﻭﻗﻔﻪ ﺩﺭ ﺳﻄﺢ ﺗﻘﺪﻡ ﺑﺎﻻﺗﺮ ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﺩ.
k
ﺑﺮﺍﻱ ﺗﻌﻴﻴﻦ ﺳﻄﺢ ﺗﻘﺪﻡ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮ 0ﺑﻜﺎﺭ ﻣﻲ ﺭﻭﺩ. IP.1 PT0
a
ﺍﮔﺮ PT0 = 1ﺑﺎﺷﺪ ،ﺍﻳﻦ ﻭﻗﻔﻪ ﺩﺭ ﺳﻄﺢ ﺗﻘﺪﻡ ﺑﺎﻻﺗﺮ ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﺩ.
lM
ﺑﺮﺍﻱ ﺗﻌﻴﻴﻦ ﺳﻄﺢ ﺗﻘﺪﻡ ﻭﻗﻔﻪ ﺧﺎﺭﺟﻲ 0ﺑﻜﺎﺭ ﻣﻲ ﺭﻭﺩ. IP.0 PX0
ﺍﮔﺮ PX0 = 1ﺑﺎﺷﺪ ،ﺍﻳﻦ ﻭﻗﻔﻪ ﺩﺭ ﺳﻄﺢ ﺗﻘﺪﻡ ﺑﺎﻻﺗﺮ ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﺩ.
o
ﻛﺎﺭﺑﺮ ﻧﺮﻡﺍﻓﺰﺍﺭ ﻧﺒﺎﻳﺪ ﺑﻴﺖﻫﺎﻱ ﺗﻌﺮﻳﻒ ﻧﺸﺪﻩ ﺭﺍ ﻳﻚ ﻛﻨﺪ ،ﺗﺎ ﻭﻗﺘﻲ ﻛﻪ ﺍﺯ ﺁﻥﻫﺎ ﺩﺭ
tr
ﺍﮔﺮ ﻳﻜﻲ ﺍﺯ ﺷﺮﺍﻳﻂ ﺯﻳﺮ ﺑﺮﻗﺮﺍﺭ ﺑﺎﺷﺪ .ﺳﺨﺖﺍﻓﺰﺍﺭ ﻋﻤﻠﻴﺎﺕ ﻓﺮﺍﺧﻮﺍﻧﻲ ﻭﻗﻔﻪ ﺭﺍ ﺍﻧﺠﺎﻡ ﻧﺨﻮﺍﻫﺪ ﺩﺍﺩ:
o
.C
.١ﻭﻗﻔﻪﺍﻱ ﺑﺎ ﺣﻖﺗﻘﺪﻡ ﺑﺮﺍﺑﺮ ﻳﺎ ﺑﺎﻻﺗﺮ ،ﺍﺯ ﻗﺒﻞ ﺩﺭ ﺣﺎﻝ ﺍﺟﺮﺍ ﺑﺎﺷﺪ .ﺍﺟﺮﺍﻱ ﻭﻗﻔﺔ ﺑﺎ ﺣﻖﺗﻘﺪﻡ
w
ﭘﺎﺋﻴﻦﺗﺮ ﺗﻮﺳﻂ ﻭﻗﻔﺔ ﺑﺎ ﺣﻖﺗﻘﺪﻡ ﺑﺎﻻﺗﺮ ﻣﺘﻮﻗﻒ ﻣﻲﺷﻮﺩ؛ ﺍﻟﺒﺘﻪ ﺍﮔﺮ ﻭﻗﻔﺔ ﺑﺎ ﺣﻖﺗﻘﺪﻡ ﺑﺎﻻﺗﺮ
w
.٢ﺳﻴﻜﻞ ﻣﺎﺷﻴﻦ ﻓﻌﻠﻲ ،ﺁﺧﺮﻳﻦ ﺳﻴﻜﻞ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﺩﺭ ﺣﺎﻝ ﺍﺟﺮﺍ ﻧﺒﺎﺷﺪ .ﺍﺟﺮﺍﻱ
ﺭﺟﻴﺴﺘﺮﻫﺎﻱ IEﻳﺎ IPﺭﺍ ﺍﻧﺠﺎﻡ ﻣﻲﺩﻫﺪ ،ﺑﺎﺷﺪ .ﺣﺪﺍﻗﻞ ﺑﺎﻳﺪ ﻳﻚ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﺍﺿﺎﻓﻲ ﺑﻌﺪ
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
ﺍﺯ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞﻫﺎﻳﻲ ﻛﻪ ﭘﻴﺶ ﺍﺯ ﭘﺮﺵ ﺑﻪ ﺁﺩﺭﺱ ﺑﺮﺩﺍﺭ ﻭﻗﻔﻪ ﻗﺮﺍﺭ ﺩﺍﺷﺘﻨﺪ ،ﺍﺟﺮﺍ ﺷﻮﺩ .ﺩﻟﻴﻞ
ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻳﻦ ﺷﺮﻁ ،ﺟﻠﻮﮔﻴﺮﻱ ﺍﺯ ﺭﺥ ﺩﺍﺩﻥ ﻳﻚ ﻭﻗﻔﻪ ﺩﺭ ﻣﻴﺎﻥ ﺍﺟﺮﺍﻱ ﻳﻚ ﺭﻭﺍﻝ ﺍﺳﺖ
r
.i
ﻛﻪ ﺑﻨﺎﻡ ﻓﺮﺁﻳﻨﺪ ﭘﻴﻜﺮﺑﻨﺪﻱ ﺩﻭﺑﺎﺭﺓ ﻭﻗﻔﻪﻫﺎ ﻧﻴﺰ ﻣﺸﻬﻮﺭ ﺍﺳﺖ .ﻛﺎﺭﺑﺮﺩﻫﺎﻱ ﺭﺍﻩﺍﻧﺪﺍﺯﻱ ﺷﻮﻧﺪﻩ
s
ﺑﺎ ﻭﻗﻔﻪ ﺑﺪﻭﻥ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻦ ﺑﻲﻧﻈﻤﻲ ﺣﺎﺻﻞ ﺍﺯ ﺩﺳﺘﺮﺳﻲ ﻧﺪﺍﺷﺘﻦ ﺑﻪ ﺭﺟﻴﺴﺘﺮﻫﺎﻱ ﻛﻨﺘﺮﻝ
r
e
ﻭﻗﻔﻪ ،ﻛﻪ ﻭﻇﻴﻔﺔ ﺗﻜﺮﺍﺭ ﻭﻗﻔﻪﻫﺎ ﺭﺍ ﺑﻪﻋﻬﺪﻩ ﺩﺍﺭﻧﺪ ،ﻧﻴﺰ ﺑﻪ ﺍﻧﺪﺍﺯﺓ ﻛﺎﻓﻲ ﭘﻴﭽﻴﺪﻩ ﻫﺴﺘﻨﺪ.
k
a
ﻣﺪﺕ ﺯﻣﺎﻧﻲ ﺭﺍ ﻛﻪ ﺑﻴﻦ ﻓﻌﺎﻝ ﺷﺪﻥ ﻳﻚ ﻭﻗﻔﻪ ﻭ ﺷﺮﻭﻉ ﺍﺟﺮﺍﻱ ﺭﻭﺍﻝ ﺳﺮﻭﻳﺲﺩﻫﻲ ﻃﻮﻝ
lM
ﻣﻲﻛﺸﺪ ،ﺯﻣﺎﻥ ﭘﺎﺳﺦ ﻣﻲﻧﺎﻣﻨﺪ .ﺩﺭ 8051ﻛﻮﺗﺎﻫﺘﺮﻳﻦ ﺯﻣﺎﻥ ﭘﺎﺳﺦ ﺑﺮﺍﺑﺮ ٣ﺳﻴﻜﻞ ﻣﺎﺷﻴﻦ ﻭ ﻃﻮﻻﻧﻲﺗﺮﻳﻦ
)ﺑﺪﺗﺮﻳﻦ ﺣﺎﻟﺖ( ﺁﻥ ﺑﺮﺍﺑﺮ ٩ﺳﻴﻜﻞ ﻣﺎﺷﻴﻦ ﻣﻲﺑﺎﺷﺪ .ﺩﺭ ﻛﺎﺭﺑﺮﺩﻫﺎﻱ ﺑﺎ ﻣﺤﺪﻭﺩﻳﺖ ﺯﻣﺎﻧﻲ ،ﺑﺎﻳﺪ ﻓﺮﺽ ﺭﺍ
o
tr
ﺩﺭ ﺣﺎﻟﺖ ﻛﻠﻲ ،ﻭﻗﻔﻪﻫﺎ ﻣﻲﺗﻮﺍﻧﻨﺪ ﺣﺴﺎﺱ ﺑﻪ ﺳﻄﺢ ﻳﺎ ﺣﺴﺎﺱ ﺑﻪ ﺗﻐﻴﻴﺮ ﺣﺎﻟﺖ )ﺗﺮﻳﮕﺮ ﺷﻮﻧﺪﻩ ﺑﺎ
ﺳﻄﺢ ﻳﺎ ﺗﺮﻳﮕﺮ ﺷﻮﻧﺪﻩ ﺑﺎ ﻟﺒﻪ( ﺑﺎﺷﻨﺪ .ﺭﻭﻳﺪﺍﺩ ﺣﺴﺎﺱ ﺑﻪ ﻟﺒﻪ ﺭﺍ ﮔﺬﺭﺍ ﻣﻲﻧﺎﻣﻨﺪ ،ﺯﻳﺮﺍ ﻭﻗﺘﻲ ﺑﻴﺖ ﭘﺮﭼﻢ
w
ﻣﺮﺑﻮﻁ ﺑﻪ ﻭﻗﻔﺔ ﺁﻥ ﭘﺎﻙ ﻣﻲﺷﻮﺩ ،ﺧﻮﺩ ﺭﻭﻳﺪﺍﺩ ﻭﻗﻔﻪ ﺩﻫﻨﺪﻩ ﻧﻴﺰ ﭘﺎﻙ ﻣﻲﮔﺮﺩﺩ )ﻣﺘﻮﻗﻒ ﻣﻲﺷﻮﺩ(.
w
w
ﺑﻪﻋﺒﺎﺭﺕ ﺩﻳﮕﺮ .ﭘﺎﻙ ﻛﺮﺩﻥ ﺑﻴﺖ ﭘﺮﭼﻢ ﻭﻗﻔﺔ ﺣﺴﺎﺱ ﺑﻪ ﺳﻄﺢ ﺑﻪ ﺷﺮﻁ ﺍﻳﻨﻜﻪ ﺳﻄﺢ ﻣﻨﻄﻘﻲ ﺧﺎﺭﺟﻲ ﻛﻪ
ﻭﻗﻔﻪ ﺭﺍ ﺍﻳﺠﺎﺩ ﻛﺮﺩﻩ ﺍﺳﺖ ﻓﻌﺎﻝ ﺑﻤﺎﻧﺪ ،ﻫﻴﭻ ﺗﺄﺛﻴﺮﻱ ﺑﺮ ﺭﻭﻧﺪ ﺍﺟﺮﺍﻱ ﻭﻗﻔﻪ ﻧﺨﻮﺍﻫﺪ ﮔﺬﺍﺷﺖ.
ﺩﺭ ،8051ﻣﻲﺗﻮﺍﻧﻴﻢ ﻭﻗﻔﻪﻫﺎﻱ ﺧﺎﺭﺟﻲ INT0ﻭ INT1ﺭﺍ ﺑﻪﻃﻮﺭ ﻣﺠﺰﺍ ﺑﻪ ﻳﻜﻲ ﺍﺯ ﺩﻭ ﺣﺎﻟﺖ
ﺣﺴﺎﺱ ﺑﻪ ﺳﻄﺢ ﻭ ﺣﺴﺎﺱ ﺑﻪ ﻟﺒﻪ ﭘﻴﻜﺮﺑﻨﺪﻱ ﻛﻨﻴﻢ .ﺑﺪﻳﻦ ﻣﻨﻈﻮﺭ ﺍﺯ ﺑﻴﺖﻫﺎﻱ IT0ﻭ IT1ﺭﺟﻴﺴﺘﺮ
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
TCONﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻛﻨﻴﻢ .ﻫﻨﮕﺎﻡ ﺭﺥ ﺩﺍﺩﻥ ﻭﻗﻔﻪ ،ﺑﻴﺖ ﭘﺮﭼﻢ ﻳﻚ ﻣﻲﺷﻮﺩ ﻭ ﻭﻗﺘﻲ ﻓﺮﺍﺧﻮﺍﻧﻲ ﺍﺯ ﺑﺮﺩﺍﺭ
r
.i
ﺩﺭ ﻣﻮﺭﺩ ﺗﺎﻳﻤﺮﻫﺎ ،ﭘﺮﭼﻢﻫﺎﻱ TF0ﻭ TF1ﻭﻗﺘﻲ ﻳﻚ ﻣﻲﺷﻮﻧﺪ ﻛﻪ ﻋﻤﻞ ﺷﻤﺎﺭﺵ ﺩﺭ ﺭﺟﻴﺴﺘﺮ
s
ﺷﻤﺎﺭﻧﺪﺓ ﻣﺮﺑﻮﻃﻪ ﻳﻚ ﺩﻭﺭ ﺑﺰﻧﺪ ،ﻳﻌﻨﻲ ﻫﻤﺔ ﻳﻚﻫﺎ ﺑﻪ ﺻﻔﺮ ﺗﺒﺪﻳﻞ ﺷﻮﻧﺪ ،ﻭﻗﻔﻪﻫﺎﻱ ﺷﻤﺎﺭﻧﺪﻩ ﺣﺴﺎﺱ
r
e
ﺑﻪ ﻟﺒﻪ ﻫﺴﺘﻨﺪ .ﻫﻤﭽﻨﻴﻦ TF0 ،ﻭ TF1ﺩﺭ ﻃﻮﻝ ﺳﺮﻭﻳﺲﺩﻫﻲ ﻭﻗﻔﻪ ﺑﻪﺻﻮﺭﺕ ﺧﻮﺩﻛﺎﺭ ﭘﺎﻙ ﻣﻲﺷﻮﻧﺪ.
k
ﻭﻗﻔﺔ ﺩﺭﮔﺎﻩ ﺳﺮﻳﺎﻝ ﺑﻪﻫﻨﮕﺎﻡ ﻳﻚ ﺷﺪﻥ ﺑﻴﺖ RIﻳﺎ ،TIﻓﻌﺎﻝ ﻣﻲﺷﻮﺩ .ﺍﻟﺒﺘﻪ RI ،ﻭ TIﺑﻪﻃﻮﺭ
a
lM
ﺧﻮﺩﻛﺎﺭ ﭘﺎﻙ ﻧﻤﻲﺷﻮﻧﺪ .ﺭﻭﺍﻝ ﺳﺮﻭﻳﺲﺩﻫﻲ ﻭﻗﻔﻪ ،ﺧﻮﺩ ﺗﺸﺨﻴﺺ ﻣﻲﺩﻫﺪ ﻛﻪ ﻛﺪﺍﻡ ﺑﻴﺖ ،ﻭﻗﻔﻪ ﺭﺍ
ﺍﻳﺠﺎﺩ ﻛﺮﺩﻩ ﺍﺳﺖ ﻭ ﺳﭙﺲ ﺑﻪﻋﻨﻮﺍﻥ ﺍﺟﺮﺍﻱ ﻗﺴﻤﺘﻲ ﺍﺯ ﺭﻭﺍﻝ ،ﺁﻥ ﺑﻴﺖ ﺭﺍ ﭘﺎﻙ ﻣﻲﻛﻨﺪ.
o
tr
n
o
.C
w
w
w
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
r
SMO SM1 SM2 REN TB8 RB8 TI RI
.i
s
SM0 SM1
r
0 0 ﺣﺎﻟﺖ ﺻﻔﺮ
e
0 1 ﺣﺎﻟﺖ ﻳﻚ
k
1 0 ﺣﺎﻟﺖ ﺩﻭ
1 1
a
ﺣﺎﻟﺖ ﺳﻪ
lM
:SM0, SM1
o
ﺟﻬﺖ ﻣﺸﺨﺺ ﻧﻤﻮﺩﻥ ﺣﺎﻟﺖ ﺩﺭﮔﺎﻩ ﺳﺮﻳﺎﻝ ﻃﺒﻖ ﺟﺪﻭﻝ ﺑﺎﻻ ﺑﻪ ﻛﺎﺭ ﻣﻲﺭﻭﺩ.
tr
ﺣﺎﻟﺖ ﺻﻔﺮ:
o
.C
ﺣﺎﻟﺖ ﺻﻔﺮ ﺍﺯ ﻋﻤﻠﻴﺎﺕ ﻧﻴﻤﻪ ﺩﻭ ﻃﺮﻓﻪ ﻫﻤﺰﻣﺎﻥ ﺗﺸﻜﻴﻞ ﻳﺎﻓﺘﻪ ﺍﺳﺖ .ﺩﺍﺩﻩﻫﺎ ﺍﺯ ﻃﺮﻳﻖ ﭘﺎﻳﺔ RXD
ﻭ ﺩﺭ ﺩﺳﺘﻪﻫﺎﻱ ٨ﺑﻴﺘﻲ ﺍﺭﺳﺎﻝ ﻭ ﺩﺭﻳﺎﻓﺖ ﻣﻲﺷﻮﻧﺪ )ﺍﻟﺒﺘﻪ ﻧﻪ ﺑﻪﻃﻮﺭ ﻫﻤﺰﻣﺎﻥ( .ﺑﻪﻃﻮﺭﻳﻜﻪ ﺍﺑﺘﺪﺍ ﻛﻢ
w
ﺍﺭﺯﺵﺗﺮﻳﻦ ﺑﻴﺖ ﺍﺭﺳﺎﻝ ﻳﺎ ﺩﺭﻳﺎﻓﺖ ﻣﻲﺷﻮﺩ .ﻧﺮﺥ ﺍﺭﺳﺎﻝ /ﺩﺭﻳﺎﻓﺖ ﺩﺍﺩﻩ ﺑﺮﺍﺑﺮ ﺑﺎ ﻳﻚ ﺩﻭﺍﺯﺩﻫﻢ ﻓﺮﻛﺎﻧﺲ
w
w
ﺍﺳﻴﻼﺗﻮﺭ ﺍﺳﺖ .ﺣﺪﺍﻛﺜﺮ ﺳﺮﻋﺖ ﺍﻧﺘﻘﺎﻝ ﻛﻪ ﻫﻢ ﻓﺮﻛﺎﻧﺲ ﺑﺎ ﻧﺮﺥ ﺍﺭﺳﺎﻝ /ﺩﺭﻳﺎﻓﺖ ﺩﺍﺩﻩ ﺍﺳﺖ ،ﺩﺭ ﻃﻮﻝ
ﻫﺮ ﺩﻭ ﻋﻤﻴﺎﺕ ﺍﺭﺳﺎﻝ ﻭ ﺩﺭﻳﺎﻓﺖ ﺑﺮﺍﻱ ﻫﻤﺰﻣﺎﻥ ﻛﺮﺩﻥ ﮔﻴﺮﻧﺪﻩ ﻭ ﻓﺮﺳﺘﻨﺪﻩ ﺑﻜﺎﺭ ﻣﻲ ﺭﻭﺩ ﻭ ﺩﺭ ﭘﺎﻳﻪ TXD
ﻗﺒﻞ ﺩﺳﺘﺮﺳﻲ ﻣﻲﺑﺎﺷﺪ .ﻟﺒﻪ ﺳﺎﻋﺖ ﺍﻧﺘﻘﺎﻝ ﺩﺭ ﻃﻮﻝ ﺣﺎﻟﺖ ﻣﻌﺘﺒﺮ ﻫﺮ ﺑﻴﺖ ﺩﺍﺩﻩ ﺍﺗﻔﺎﻕ ﻣﻲﺍﻓﺘﺪ .ﺗﻮﺟﻪ
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ ﻛﻪ TXDﻭ RXDﻛﺎﺭﺑﺮﺩﻫﺎﻱ ﺩﻭﻡ ﭘﺎﻳﻪﻫﺎﻱ ﺩﺭﮔﺎﻩ 3ﻫﺴﺘﻨﺪ .ﺩﺭ ﺣﺎﻟﺖ ﺻﻔﺮ ،ﻋﻤﻠﻴﺎﺕ
ﺩﺭﻳﺎﻓﺘﻲ ﻭﻗﺘﻲ ﺁﻏﺎﺯ ﻣﻲﺷﻮﺩ ﻛﻪ ﺑﻴﺖ RENﻭ RIﺩﺭ ﺭﺟﻴﺴﺘﺮ SCONﺑﻪ ﺗﺮﺗﻴﺐ 1ﻭ 0ﺷﺪﻩ ﺑﺎﺷﻨﺪ.
r
.i
ﺣﺎﻟﺖ ﯾﮏ:
s
ﺣﺎﻟﺖ ﻳﻚ ،ﺑﻪﺻﻮﺭﺕ ﻋﻤﻠﻴﺎﺕ ﻏﻴﺮ ﻫﻤﺰﻣﺎﻥ ﺩﻭ ﻃﺮﻓﻪ ﻛﺎﻣﻞ ﺍﺳﺖ .ﺩﺍﺩﻩ ﺍﺯ ﻃﺮﻳﻖ ﭘﺎﻳﺔ TXD
r
e
ﺍﺭﺳﺎﻝ ﻭ ﺍﺯ ﻃﺮﻳﻖ ﭘﺎﻳﺔ RXDﺩﺭﻳﺎﻓﺖ ﻣﻲﺷﻮﺩ .ﻗﺎﻟﺐ ﻛﺎﻣﻞ ﺩﺍﺩﻩ ﺩﺭ ﺍﺭﺳﺎﻝ /ﺩﺭﻳﺎﻓﺖ ﺳﺮﻳﺎﻝ ﺷﺎﻣﻞ ﻳﻚ
k
a
ﺑﻴﺖ ﺷﺮﻭﻉ )ﻫﻤﻴﺸﻪ ﺻﻔﺮ ﺍﺳﺖ( ،ﺑﻪﺩﻧﺒﺎﻝ ﺁﻥ ٨ﺑﻴﺖ ﺩﺍﺩﻩ )ﺍﺑﺘﺪﺍ ﻛﻢ ﺍﺭﺯﺵﺗﺮﻳﻦ ﺑﻴﺖ( ،ﻭ ﺩﺭ ﺍﻧﺘﻬﺎ ﻳﻚ
lM
ﺑﻴﺖ ﺗﻮﻗﻒ )ﻫﻤﻴﺸﻪ ﺣﺪﺍﻗﻞ ﻳﻚ ﺍﺳﺖ ،(.ﺍﺭﺳﺎﻝ ﻣﻲﺷﻮﺩ .ﺑﻴﺖﻫﺎﻱ ﺷﺮﻭﻉ ﻭ ﺗﻮﻗﻒ ﺗﻮﺳﻂ ﺳﺨﺖﺍﻓﺰﺍﺭ
ﺑﻪ ٨ﺑﻴﺖ ﺩﺍﺩﻩ ﻛﻪ ﺍﺯ ﻃﺮﻳﻖ ﻧﺮﻡﺍﻓﺰﺍﺭ ﺑﻪ ﺭﺟﻴﺴﺘﺮ SBUFﻧﻮﺷﺘﻪ ﺷﺪﻩ ﻳﺎ ﺍﺯ ﺁﻥ ﺧﻮﺍﻧﺪﻩ ﺷﺪﻩ ﺍﺳﺖ،
o
tr
ﺍﺿﺎﻓﻪ ﻣﻲﮔﺮﺩﻧﺪ .ﻧﺮﺥ ﺍﺭﺳﺎﻝ ﺑﻴﺖ ﻣﺘﻐﻴﺮ ﺍﺳﺖ ﻭ ﻣﻲﺗﻮﺍﻥ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺗﺎﻳﻤﺮ 1ﺑﻪﻋﻨﻮﺍﻥ ﻣﻮﻟﺪ ﻧﺮﺥ
n
ﺣﺎﻟﺖ دو:
ﺣﺎﻟﺖ ﺩﻭ ﺷﺒﻴﻪ ﺣﺎﻟﺖ ﻳﻚ ﺍﺳﺖ ،ﺑﻪ ﻏﻴﺮ ﺍﺯ ﺩﻭ ﺍﺳﺘﺜﻨﺎﺀ ﻛﻪ ﻭﺟﻮﺩ ﺩﺍﺭﺩ .ﺍﻭﻻﹰ ،ﻗﺎﻟﺐ ﺩﺍﺩﻩ ١١ﺑﻴﺘﻲ
w
w
ﺍﺳﺖ؛ ﻳﻚ ﺑﻴﺖ ﺩﺍﺩﻩ ﺑﻪﻋﻨﻮﺍﻥ ﻧﻬﻤﻴﻦ ﺑﻴﺖ ﺩﺍﺩﻩ ،ﻗﺒﻞ ﺍﺯ ﺑﻴﺖ ﺗﻮﻗﻒ ﺍﺿﺎﻓﻪ ﺷﺪﻩ ﺍﺳﺖ .ﻣﻮﻗﻊ ﺍﺭﺳﺎﻝ.
ﺑﻴﺖ ﻧﻬﻢ ﺭﺍ ﻣﻲﺗﻮﺍﻥ ﺍﺯ ﺑﻴﺖ TB8ﺭﺟﻴﺴﺘﺮ SCONﺧﻮﺍﻧﺪ .ﻓﺮﺽ ﺑﺮ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﻣﺤﺘﻮﻱ TB8ﻗﺒﻞ
w
ﺍﺯ ﺁﻏﺎﺯ ﻋﻤﻠﻴﺎﺕ ﺍﺭﺳﺎﻝ ﻧﻮﺷﺘﻪ ﺷﺪﻩ ﺍﺳﺖ .ﺩﺭ ﻋﻤﻠﻴﺎﺕ ﺩﺭﻳﺎﻓﺖ ،ﺑﻴﺖ ﻧﻬﻢ ﺭﺍ ﻣﻲﺗﻮﺍﻥ ﺍﺯ ﺑﻴﺖ RB8
ﺭﺟﻴﺴﺘﺮ SCONﺧﻮﺍﻧﺪ .ﺍﺯ ﺑﻴﺖ ﻧﻬﻢ ﻣﻌﻤﻮ ﹰﻻ ﺑﻪﻋﻨﻮﺍﻥ ﺑﻴﺖ ﺗﻮﺍﺯﻥ ٨ﺑﻴﺖ ﺩﺍﺩﻩ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﺷﻮﺩ .ﺛﺎﻧﻴﹰﺎ.
ﻧﺮﺥ ﺍﺭﺳﺎﻝ ﺑﻴﺖ ﺑﺮﺍﺑﺮ ﻳﻚ ﺳﻲ ﻭ ﺩﻭﻡ ﻳﺎ ﻳﻚ ﺷﺼﺖ ﻭ ﭼﻬﺎﺭﻡ ﻓﺮﻛﺎﻧﺲ ﺍﺳﻴﻼﺗﻮﺭ ﻣﻲﺑﺎﺷﺪ ،ﻛﻪ ﺍﻧﺘﺨﺎﺏ
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
ﻳﻜﻲ ﺍﺯ ﺍﻳﻦ ﺩﻭ ﻧﺮﺥ ﺍﺭﺳﺎﻝ ﺗﻮﺳﻂ ﺑﻴﺖ ) SMODﺑﻴﺖ ﻫﻔﺘﻢ( ﺭﺟﻴﺴﺘﺮ PCONﺻﻮﺭﺕ ﻣﻲﮔﻴﺮﺩ .ﺍﮔﺮ
SMODﻳﻚ ﺷﻮﺩ 1/32 ،ﻭ ﺍﮔﺮ ﺻﻔﺮ ﺷﻮﺩ 1/64 ،ﻓﺮﻛﺎﻧﺲ ﺍﺳﻴﻼﺗﻮﺭ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﺩ.
r
.i
ﺣﺎﻟﺖ ﺳﻪ:
s
ﺣﺎﻟﺖ ﺳﻪ ﺷﺒﻴﻪ ﺣﺎﻟﺖ ﺩﻭ ﺍﺳﺖ ،ﺑﻪ ﺍﺳﺘﺜﻨﺎﻱ ﺍﻳﻨﻜﻪ ﻧﺮﺥ ﺍﺭﺳﺎﻝ ﺑﻴﺖ ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ ﻣﺘﻐﻴﺮ ﺍﺳﺖ
r
ﻭ ﻃﺒﻖ ﺭﻭﺷﻲ ﻛﻪ ﺩﺭ ﺣﺎﻟﺖ ﻳﻚ ﮔﻔﺘﻪ ﺷﺪ،ﺗﻌﻴﻴﻦ ﻣﻲﺷﻮﺩ.ﻋﻤﻠﻴﺎﺕ ﺩﺭﻳﺎﻓﺖ ﺩﺭ ﺣﺎﻟﺖﻫﺎﻱ 2 ،1ﻭ 3ﺑﺎ
e
k
ﻳﻚ ﻛﺮﺩﻥ ﺑﻴﺖ RENﺭﺟﻴﺴﺘﺮ SCONﻓﻌﺎﻝ ﻣﻲﺷﻮﺩ .ﺩﺭﻳﺎﻓﺖ ﻭﺍﻗﻌﻲ ﻭﻗﺘﻲ ﺷﺮﻭﻉ ﻣﻲﺷﻮﺩ ﻛﻪ ﺑﻴﺖ
a
ﺷﺮﻭﻉ ﻭﺭﻭﺩﻱ ،ﺳﺒﺐ ﺍﻳﺠﺎﺩ ﻳﻚ ﺗﻐﻴﻴﺮ ﺣﺎﻟﺖ ﻳﻚ ﺑﻪ 0ﺩﺭ ﭘﺎﻳﺔ RXDﺷﻮﺩ .ﻫﻤﺎﻥﻃﻮﺭ ﻛﻪ ﮔﻔﺘﻪ ﺷﺪ،
lM
ﺑﻬﺘﺮ اﺳﺖ TIMER1در ﺣﺎﻟﺖ دو اﻧﺘﺨﺎب ﺷﻮد ) (8 bit auto reloadدر اﯾﻦ دو ﺣﺎﻟﺖ ﻧﺮخ
o
ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻛﺮﻳﺴﺘﺎﻝ )ﻧﻮﺳﺎﻥﺳﺎﺯ( 11.0592MHzﺑﻪ ﺍﻳﻦ ﻋﻠﺖ ﺍﺳﺖ ﺗﺎ ﻋﺪﺩ ﺧﺮﻭﺟﻲ ﻳﻚ ﻋﺪﺩ
w
ﺻﺤﻴﺢ ﻭ ﺑﺪﻭﻥ ﺍﻋﺸﺎﺭ ٢٨٨٠٠ﺑﺎﺷﺪ ﺳﭙﺲ ﻣﻲﺗﻮﺍﻧﻴﻢ ﺑﺎ ﺑﺎﺭﮔﺬﺍﺭﻱ TIMER1ﻧﺮﺥ ﺍﺭﺳﺎﻝ ﺭﺍ ﻃﺒﻖ
w
-12 2400
-24 1200
-48 600
r
:SM2
.i
ﺑﻴﺸﺘﺮ ﺩﺭ ﺍﺭﺗﺒﺎﻁ ﭼﻨﺪ ﺭﻳﺰﭘﺮﺩﺍﺯﻧﺪﻩ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﺩ .ﭼﻨﺎﻧﭽﻪ SM2ﺍﻧﺘﺨﺎﺏ ﺷﺪﻩ
s
r
ﺑﺎﺷﺪ ﺷﺮﻁ ﻭﺍﺭﺩﺷﺪﻥ ﻭﻗﻔﻪ ﺳﺮﻳﺎﻝ ﺩﺭﻳﺎﻓﺖ ﺑﻴﺖ ﻧﻬﻢ ﺍﺳﺖ .ﺍﻳﻦ ﺑﻴﺖ ﺩﺭ ﺣﺎﻟﺖ ﻋﺎﺩﻱ ﺻﻔﺮ ﺍﺳﺖ.
e
k
RENﺍﮔﺮ ﺍﻳﻦ ﺑﻴﺖ ﻳﻚ ﺷﺪﻩ ﺑﺎﺷﺪ ﭘﺎﻳﻪ RXDﺭﻭﻱ 8051ﻓﻌﺎﻝ ﻣﻲﺷﻮﺩ.
a
lM
:RB8
ﺑﻴﺖ ﻧﻬﻢ ﺍﺭﺳﺎﻝ ﺍﺳﺖ ﺍﮔﺮ ﻳﻚ ﺑﺎﺷﺪ ﺑﻴﺖ ﻧﻬﻢ ﻳﻚ ﺍﺭﺳﺎﻝ ﺷﺪﻩ ﻭ ﺍﮔﺮ ﺻﻔﺮ ﺑﺎﺷﺪ ﺑﻴﺖ ﻧﻬﻢ ﺻﻔﺮ
o
tr
:TB8
o
ﺑﻴﺖ ﺩﺭﻳﺎﻓﺖ ﺷﺪﻩ ﻧﻬﻢ ﺩﺭ ﺍﻳﻦ ﺣﺎﻓﻈﻪ ﻗﺮﺍﺭ ﻣﻲﮔﻴﺮﺩ ﻭ ﺩﺭ ﺣﺎﻟﺖ ﻋﺎﺩﻱ ﺻﻔﺮ ﺍﺳﺖ .ﺷﺎﻳﺪ ﺍﺯ
.C
ﺧﻮﺩ ﺳﻮﺍﻝ ﻛﻨﻴﺪ ﻛﻪ ﭼﺮﺍ ﺍﻳﻦ ﺩﻭ ﺑﻴﺖ ﻭﺟﻮﺩ ﺩﺍﺭﻧﺪ ﺑﺪﻳﻦ ﺩﻟﻴﻞ ﻛﻪ SBUFERﻫﺸﺖ ﺑﻴﺘﻲ ﺍﺳﺖ ﻭ
w
ﻧﻤﻲﺗﻮﺍﻧﺪ Pﻳﺎ ﺑﻴﺖ ﻧﻬﻢ ﺭﺍ ﻫﻢ ﺩﺭ ﺧﻮﺩ ﺟﺎﻱ ﺩﻫﺪ ﺑﻪ ﻫﻤﻴﻦ ﺩﻟﻴﻞ ﺍﻳﻦ ﺩﻭ ﺑﻴﺖ ﺭﺍ ﺟﻬﺖ ﺩﺭﻳﺎﻓﺖ ﻳﺎ
w
ﺟﻬﺖ ﺍﺭﺳﺎﻝ ﺍﻃﻼﻋﺎﺕ ﺑﻪ ﺩﺭﮔﺎﻩ ﺳﺮﻳﺎﻝ RS232ﺑﻪ ﻃﻮﺭ ﻣﺜﺎﻝ ﺩﺭﮔﺎﻩ ﺳﺮﻳﺎﻝ ﻛﺎﻣﭙﻴﻮﺗﺮ ﺑﺎﻳﺪ ﺑﻪ
-15 ، RS232ﺗﺎ -3ﺳﻄﺢ ﻳﻚ ﻭ +15ﺗﺎ +3ﺳﻄﺢ ﻣﻨﻄﻘﻲ ﺻﻔﺮ ﺍﺳﺖ .ﺑﺎﻳﺪ ﺍﻳﻦ ﺗﺒﺪﻳﻞ ﺍﺯ
r
.i
ﺳﻄﺢ TTLﺑﻪ RS232ﺻﻮﺭﺕ ﺑﮕﻴﺮﺩ ﺍﻳﻦ ﺗﺒﺪﻳﻞ ﻣﻲﺗﻮﺍﻧﺪ ﺗﻮﺳﻂ ﺁﻱﺳﻲ Max232ﺑﻪ
s
ﺻﻮﺭﺕ ﺷﻜﻞ ﺯﻳﺮ ﺻﻮﺭﺕ ﺑﮕﻴﺮﺩ.
r
e
k
a
lM
o
tr
n
o
.C
w
w
-٢ﺩﻭﻣﻴﻦ ﻧﻜﺘﻪ ﺗﻬﻴﻪ ﻳﻚ ﻛﺎﺑﻞ ﺭﺍﺑﻂ ﺍﺯ ﻛﺎﻣﭙﻴﻮﺗﺮ ﺑﻪ 89C51ﻣﻲﺑﺎﺷﺪ ﻛﻪ ﺷﻤﺎ ﻣﻲﺗﻮﺍﻧﻴﺪ ﻣﺎﻧﻨﺪ
w
r
ﺩﺭ ﺍﺭﺳﺎﻝ ﺩﺍﺩﻩ ﺍﺯ ﻃﺮﻳﻖ ﺳﺮﻳﺎﻝ ﺑﺎﻳﺪ ﻣﺮﺍﺣﻞ ﺯﻳﺮ ﺭﺍ ﻃﻲ ﻛﺮﺩ:
.i
-١ﺑﺎﺭﮔﺬﺍﺭﻱ SCONﺟﻬﺖ ﺍﻧﺘﺨﺎﺏ ﺣﺎﻟﺖ ﺍﺭﺳﺎﻝ
s
r
-٢ﺑﺎﺭﮔﺬﺍﺭﻱ TMODﺑﺮﺍﻱ ﺣﺎﻟﺖ ١ﻭ٣
e
k
-٣ﺑﺎﺭﮔﺬﺍﺭﻱ TIMER1ﺑﺮﺍﻱ ﺣﺎﻟﺖ ١ﻭ٣
a
-٤ﺍﻧﺘﻘﺎﻝ ﺩﺍﺩﻩ ﺩﺭ SBUF
lM
-٥ﺳﺮﻛﺸﻲ ﭘﺮﭼﻢ ﺍﺭﺳﺎﻝ ﺩﺭ ﺍﻳﻦ ﻗﺴﻤﺖ TIﺭﺍ ﺳﺮﻛﺸﻲ ﻛﺮﺩﻩ ﺗﺎ ﺍﺭﺳﺎﻝ ﺗﻤﺎﻡ ﺷﻮﺩ ﺑﻌﺪ ﺍﺯ ﺍﺗﻤﺎﻡ
o
ﺑﺮﻧﺎﻣﻪﺍﻱ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻣﻘﺎﺩﻳﺮ ﺭﻭﻱ ﭘﻮﺭﺕ ﺩﻭ ﺭﺍ ﺑﺮ ﺭﻭﻱ ﺩﺭﮔﺎﻩ ﺳﺮﻳﺎﻝ ﺑﺎ ﻧﺮﺥ 9600bpsﺍﺭﺳﺎﻝ
w
ﻛﻨﺪ.
w
MAIN:
MOV SCON,#01010000B
MOV TMOD,#20H
w
r
.i
-٢ﺑﺎﺭﮔﺬﺍﺭﻱ TMODﺑﺮﺍﻱ ﺣﺎﻟﺖ ١ﻭ٣
s
-٣ﺑﺎﺭﮔﺬﺍﺭﻱ TIMER1ﺑﺮﺍﻱ ﺣﺎﻟﺖ ١ﻭ٣
r
e
-٤ﺍﻧﺘﻘﺎﻝ ﺩﺍﺩﻩ ﺩﺭ SBUF
k
-٥ﺳﺮﻛﺸﻲ ﭘﺮﭼﻢ ﺍﺭﺳﺎﻝ ﺩﺭ ﺍﻳﻦ ﻗﺴﻤﺖ RIﺭﺍ ﺳﺮﻛﺸﻲ ﻛﺮﺩﻩ ﺗﺎ ﺍﺭﺳﺎﻝ ﺗﻤﺎﻡ ﺷﻮﺩ ﺑﻌﺪ ﺍﺯ ﺍﺗﻤﺎﻡ
a
lM
ﻛﺎﻣﻞ ﺍﺭﺳﺎﻝ RIﺑﻪ ﺻﻮﺭﺕ ﺳﺨﺖﺍﻓﺰﺍﺭﻱ ﻳﻚ ﻣﻲﺷﻮﺩ.
MAIN:
w
MOV SCON,#01010000B
MOV TMOD,#20H
MOV TH1,#-3 ;IF XTALL CHANG TO 11.0592 SET BAUD RATE -3=9600|-6=4800|-
w
12=2400|-24=1200 ......
SETB TR1
w
RESEVER:
LOOP:JNB RI,LOOP
MOV A,SBUF
CLR RI
MOV P1,A
JMP RESEVER
END
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
r
.i
LCD
s
r
ﺗﻤﺎﻳﻞ ﺑﻪ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﻤﺎﻳﺸﮕﺮ ﻛﺮﻳﺴﺘﺎﻝ ﻣﺎﻳﻊ ) (LCDﺑﻪ ﻋﻨﻮﺍﻥ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﺩﺭ ﭘﺮﻭﮊﻩﻫﺎﻱ
e
ﻣﺨﺘﻠﻒ ﺭﻭﺯ ﺑﻪ ﺭﻭﺯ ﺍﻓﺰﺍﻳﺶ ﻣﻲﻳﺎﺑﺪ .ﺩﺭ ﺟﺎﻳﻲ ﻛﻪ 7SEGMENTﻧﻤﻲﺗﻮﺍﻧﺪ ﻛﺎﺭﺍﻛﺘﺮﻫﺎ ﺭﺍ ﻧﻤﺎﻳﺶ ﺩﻫﺪ
k
ﻭ ﻳﺎ ﺍﻳﻨﻜﻪ ﻓﻀﺎﻱ ﺍﺿﺎﻓﻲ ﺑﺮﺍﻱ ﻧﻤﺎﻳﺶ ﺗﻌﺪﺍﺩ ﺭﻗﻢﻫﺎ ﻣﻲﮔﻴﺮﺩ ﺍﺯ LCDﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻛﻨﻨﺪ.
a
lM
ﺗﻮﺻﻴﻒ ﭘﺎﻳﻪﻫﺎﻯ :LCD
o
ﻣﻨﺒﻊ ﺗﻐﺬﻳﻪ
---- VEE 3
o
r
.i
s
r
e
k
a
lM
o
tr
n
o
.C
w
w
w
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
ﭘﺎﻳﻪ :RS
ﺩﺭ ﺩﺍﺧﻞ LCDﺩﻭ ﺛﺒﺎﺕ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻭ ﺍﻳﻦ ﭘﺎﻳﻪ ﺑﺮﺍﻱ ﺍﻧﺘﺨﺎﺏ ﺍﻳﻦ ﺩﻭ ﺛﺒﺎﺕ ﺑﻪ ﺗﺮﺗﻴﺐ ﺯﻳﺮ ﻋﻤﻞ
r
ﻣﻲﻛﻨﺪ.
.i
s
ﺍﻟﻒ :ﺍﮔﺮ RS=0ﺑﺎﺷﺪ ﺛﺒﺎﺕ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﻓﺮﻣﺎﻥ ﺍﻧﺘﺨﺎﺏ ﻣﻲﺷﻮﺩ ﻭﺑﺎﻋﺚ ﻣﻲﺷﻮﺩ ﻓﺮﻣﺎﻥﻫﺎﻳﻲ ﻛﻪ ﺩﺭ
r
e
ﺟﺪﻭﻝ ﺯﻳﺮ ﺁﻭﺭﺩﻩ ﺷﺪﻩ ﺻﺎﺩﺭ ﮔﺮﺩﺩ.
k
ﺏ :ﺍﮔﺮ RS=1ﺑﺎﺷﺪ ﺛﺒﺎﺕ ﺩﺍﺩﻩ ﺍﻧﺘﺨﺎﺏ ﻣﻲﮔﺮﺩﺩ ﻭ ﺑﻪ ﻣﺎ ﺍﺟﺎﺯﻩ ﻧﻮﺷﺘﻦ ﺭﻭﻱ LCDﺭﺍ ﻣﻲﺩﻫﺪ.
a
lM
ﭘﺎﻳﻪ :R/W
ﺍﻳﻦ ﭘﺎﻳﻪ ﺑﻪ ﻛﺎﺭﺑﺮﺍﺟﺎﺯﻩ ﻧﻮﺷﺘﻦ ﺍﻃﻼﻋﺎﺕ ﺩﺭ LCDﻭﻳﺎ ﺧﻮﺍﻧﺪﻥ ﺍﺯ ﺁﻥ ﺭﺍ ﻓﺮﺍﻫﻢ ﻣﻲﻛﻨﺪ .ﺑﺮﺍﻱ
o
ﻧﻮﺷﺘﻦ R/W=1ﺍﺳﺖ.
tr
n
ﭘﺎﻳﻪ :E
o
LCDﺍﺯ ﺍﻳﻦ ﭘﺎﻳﻪ ﺑﺮﺍﻱ ﻟﭻ ﻛﺮﺩﻥ ﺍﻃﻼﻋﺎﺕ ﺍﺭﺍﻳﻪ ﺷﺪﻩ ﺑﻪ ﭘﺎﻳﻪﻫﺎﻱ ﺩﺍﺩﻩﺍﺵ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻛﻨﺪ .ﻭﻗﺘﻲ
.C
ﺩﺍﺩﻩﻫﺎﻱ ﺍﻋﻤﺎﻝ ﺷﺪ ،ﻳﻚ ﭘﺎﻟﺲ ﺑﺎﻻ ﺑﻪ ﭘﺎﻳﻴﻦ ﺑﻪ ﺍﻳﻦ ﭘﺎﻳﻪ ﺍﻋﻤﺎﻝ ﻣﻲﮔﺮﺩﺩ .ﺗﺎ ﺑﻪ ﺍﻳﻦ ﻭﺳﻴﻠﻪ LCD
w
LCD(١ﺑﺮﺍﻱ ﻋﻤﻠﻴﺎﺕ ﺩﺭﻭﻧﻲ ﺧﻮﺩ ﺑﺮﺍﻱ ﺛﺒﺎﺕ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﻭﺩﺍﺩﻩ ﺑﻪ ﻣﺪﺕ ﻣﻌﻴﻨﻲ ﺯﻣﺎﻥ ﻧﻴﺎﺯ ﺩﺍﺭﺩ ،ﺩﺭ
r
.i
ﺏ :ﺍﻳﺠﺎﺩ ﻳﻚ ﺗﺄﺧﻴﺮ ﺯﻣﺎﻧﻲ ﺑﻴﻦ ﺍﻃﻼﻋﺎﺕ ﻭﺭﻭﺩﻱ
s
r
(٢ﺍﺑﺘﺪﺍ ﻳﻚ ﺯﻳﺮ ﺑﺮﻧﺎﻣﻪ COMMANDﻭﻳﻚ ﺯﻳﺮ ﺑﺮﻧﺎﻣﻪ DATAﻣﻲﻧﻮﻳﺴﻴﻢ.
e
k
ﺑﺮﺍﻱ ﺯﻳﺮ ﺑﺮﻧﺎﻣﻪ DATAﺑﺎﻳﺪ ﺗﻮﺟﻪ ﻛﺮﺩ ﻛﻪ ﭘﺎﻳﻪﻫﺎﻱ ﻛﻨﺘﺮﻟﻲ ﺑﻪﺻﻮﺭﺕ ﺯﻳﺮ ﻣﻘﺪﺍﺭﺩﻫﻲ ﻣﻲﺷﻮﻧﺪ.
a
ﺍﻟﻒRS = 1 :
lM
ﺏR/W = 0 :
o
ﺑﺮﺍﻱ ﺯﻳﺮ ﺑﺮﻧﺎﻣﻪ DATAﺑﺎﻳﺪ ﺗﻮﺟﻪ ﻛﺮﺩ ﻛﻪ ﭘﺎﻳﻪﻫﺎﻱ ﻛﻨﺘﺮﻟﻲ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﻣﻘﺪﺍﺭﺩﻫﻲ ﻣﻲﺷﻮﻧﺪ.
o
ﺍﻟﻒRS = 0 :
.C
ﺏR/W = 0 :
w
ﺑﻴﺖ ﭘﺮﭼﻢ ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻴﻢ .ﺑﺮﺍﻱ ﺍﻳﻦﻛﺎﺭ ﺑﺎﻳﺪ ﺗﻮﺟﻪ ﻛﺮﺩ ﻛﻪ ﺩﺭ ﺣﺎﻟﺖ R/W = 1ﻭ RS = 1ﻭﻗﺘﻲ
ﻛﻪ ﺑﻴﺖ ﭘﺮﭼﻢ ) ( D7ﺑﺮﺍﺑﺮ ﻳﻚ ﺑﺎﺷﺪ LCDﻣﺸﻐﻮﻝ ﺑﻮﺩﻩ ﻭ ﺍﺯ ﻋﻤﻠﻴﺎﺕ ﺩﺭﻭﻧﻲ ﻣﺮﺍﻗﺒﺖ ﻣﻲﻛﻨﺪ
ﻭﻗﺘﻲ D7 = 0ﺑﺎﺷﺪ LCDﺑﺮﺍﻱ ﺩﺭﻳﺎﻓﺖ ﺍﻃﻼﻋﺎﺕ ﺟﺪﻳﺪ ﺁﻣﺎﺩﻩ ﺍﺳﺖ .ﺑﺮﻧﺎﻣﻪ ﭼﻚ ﻛﺮﺩﻥ ﺑﻴﺖ
r
READY:
.i
SETB D7
s
CLR RS
r
SETB R/W
BACK:
e
CLR E
k
SETB E
a
JB D7,BACK
RET
lM
( ٤ﺑﺮﺍﻱ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺛﺒﺎﺕ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﺑﺎﻳﺪ ﺗﻮﺟﻪ ﺩﺍﺷﺖ ﻛﻪ ﺑﻌﻀﻲ ﺍﺯ COMMANDﻫﺎ ﺑﺎ
ﺑﻌﻀﻲ ﺩﻳﮕﺮ ﺍﺯ COMMANDﻫﺎ ﻧﻤﻲﺗﻮﺍﻧﻨﺪ ﺩﺭ ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﺍﺟﺮﺍ ﺷﻮﻧﺪ ﻭ ﺑﺎﻋﺚ ﻣﻲﺷﻮﻧﺪ ﻛﻪ ﺑﺮﻧﺎﻣﻪ
o
tr
ﺍﺟﺮﺍ ﻧﺸﻮﺩ .ﭘﺲ ﻣﺘﺬﻛﺮ ﻣﻲﺷﻮﻳﻢ ﻛﻪ ﺣﺘﻲ ﺗﺮﺗﻴﺐ ﺑﻌﻀﻲ ﺍﺯ COMMANDﻧﻴﺰ ﺑﺎﻳﺪ ﺭﻋﺎﻳﺖ ﺷﻮﺩ.
n
r
ﻧﻤﺎﻳﺶ ﺭﻭﺷﻦ ﻣﻜﺎﻥ ﭼﺸﻤﻚ ﺑﺰﻧﺪ
.i
ﺟﺎﺑﺠﺎﻳﻲ ﻣﺤﻞ ﻣﻜﺎﻥ ﻧﻤﺎ ﺑﻪ ﭼﭗ 10
s
ﺟﺎﺑﺠﺎﻳﻲ ﻣﺤﻞ ﻣﻜﺎﻥ ﻧﻤﺎ ﺑﻪ ﺭﺍﺳﺖ 14
r
ﻛﻞ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﺑﻪ ﭼﭗ ﺟﺎﺑﺠﺎ ﺷﻮﺩ 18
e
ﻛﻞ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﺑﻪ ﺭﺍﺳﺖ ﺟﺎﺑﺠﺎ ﺷﻮﺩ 1C
k
ﻣﻜﺎﻥ ﻧﻤﺎ ﺑﻪ ﺁﻏﺎﺯ ﺧﻂ ﺩﻭﻡ ﺑﺮﻭﺩ C0
a
ﺳﺎﺯ ﻣﺎﻥ ﺩﻫﻲ ٢ﺧﻂ ﻣﺎﺗﺮﻳﺲ ٧*٥ 38
lM
ﺑﺮﻧﺎﻣﻪﺍﻱ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻛﻠﻤﻪ NOﺑﺮ ﺭﻭﻱ LCDﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﺷﻮﺩ) .ﺍﺯ ﺍﻳﺠﺎﺩ ﺗﺄﺧﻴﺮ ﺯﻣﺎﻧﻲ ﺑﺮﺍﻱ
tr
ORG 00H
MOV A,#38H
w
CALL COMMAND
MOV A,#0E
w
CALL COMMAND
MOV A,#01H
CALL COMMAND
MOV A,#06H
CALL COMMAND
MOV A,#89H
CALL COMMAND
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ، ﺗﻮﻟﯿﺪ،ﻃﺮاﺣﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
MOV A,#’ N ’
CALL DAT
MOV A,#’ O ’
r
CALL DAT
.i
SJMP $
s
COMMAND:
r
MOV PORTLCD,A
e
CALL DELAY
k
CLR RS
CLR R/W
a
SETB EN
lM
CLR EN
RET
DAT:
o
MOV PORTLCD,A
tr
CALL DELAY
SETB RS
n
CLR R/W
SETB EN
o
CLR EN
.C
RET
DELAY:
w
MOV R0,#50
K1:MOV R1,#255
w
K2:DJNZ R1,K2
DJNZ R0,K1
w
RET
END
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
r
.i
s
r
e
k
a
lM
o
tr
n
o
.C
ﺍﻳﻦ ﺑﺮﻧﺎﻣﻪ ﺍﺯ ﺻﻔﺤﻪ ﻛﻠﻴﺪ ﻳﻚ ﻋﺪﺩ ﺩﻭ ﺭﻗﻤﻲ ﺩﺭﻳﺎﻓﺖ ﻣﻲﻛﻨﺪ ﻭ ﺑﺮﻧﻤﺎﻳﺶ ﻣﻲﺩﻫﺪ ﻛﻪ ﻣﺸﺨﺺ ﻛﻨﻨﺪﻩ
w
w
ﺩﺭ ﺍﺩﺍﻣﻪ ﺑﺮﻧﺎﻣﻪ ﻋﺪﺩ ﺩﻭﺭﻗﻤﻲ ﺩﻳﮕﺮﻱ ﺭﺍ ﺟﻬﺖ ﺗﻨﻈﻴﻢ ﺳﺮﻋﺖ ﻣﻮﺗﻮﺭ ﺍﺯ ﺷﻤﺎ ﺩﺭﻳﺎﻓﺖ ﻣﻲﻧﻤﺎﻳﺪ ﻭﺁﻥ
ﻋﺪﺩ ﺭﺍ ﻧﻤﺎﻳﺶ ﻣﻲﺩﻫﺪ ﻛﻪ ﺩﺭ ﻋﻤﻞ ﻫﻤﺎﻥ ﻣﻴﺰﺍﻥ ﺗﺄﺧﻴﺮ ﺩﺭ ﺑﻴﻦ ﻫﺮ ﮔﺎﻡ ﻣﻮﺗﻮﺭ ﺍﺳﺖ ﻭ ﺑﻌﺪ ﺍﺯ ﺁﻥ ﻣﻮﺗﻮﺭ
r
ROW2 EQU P2.6
.i
ROW3 EQU P2.5
ROW4 EQU P2.4
s
COL1 EQU P2.3
COL2 EQU P2.2
r
COL3 EQU P2.1
e
STEPPERPORT EQU P0
k
DELAYCOUNTER EQU 19H
NUMBERLOAD EQU 20H
a
TEMPKEYSCAN EQU 21H
DAHGANKEYSCAN EQU 22H
lM
NUMBERDISPLAY EQU 23H
SEGMENT1 EQU 24H
SEGMENT2 EQU 25H
TEMPDOR EQU 26H
o
ORG 0
JMP MAIN
o
ORG 1BH
.C
INTERRUPTTIMER1:
MOV TH1,#HIGH(64000)
MOV TL1,#LOW(64000)
w
CLR TF1
MOV P1,SEGMENT1
CALL DELAYDISPLAY
w
MOV P1,SEGMENT2
CALL DELAYDISPLAY
w
MOV P1,#0FFH
RETI
MAIN:
MOV TMOD,#11H
MOV IE,#88H
MOV SP,#50H
MOV TH1,#HIGH(64000)
MOV TL1,#LOW(64000)
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ، ﺗﻮﻟﯿﺪ،ﻃﺮاﺣﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
SETB TR1
MOV NUMBERDISPLAY,#0H
CALL DISPLAY
LOOPMAIN:
r
CALL KEYSCAN
.i
MOV DORNUMBER,NUMBERLOAD
s
CALL DELAY
MOV NUMBERDISPLAY,#0
r
CALL DISPLAY
e
k
CALL KEYSCAN
MOV SPEEDNUMBER,NUMBERLOAD
a
SCANLEFTRIGHT:
lM
CLR ROW4
JNB COL3,RIGHT
JNB COL1,LEFT
JMP SCANLEFTRIGHT
o
tr
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
n
; --------------------RIGHT
ﺍﻳﺠﺎﺩ ﺣﺮﻛﺖ ﻣﻮﺗﻮﺭ ﺑﻪ ﺳﻤﺖ ﺭﺍﺳﺖ
o
RIGHT:
.C
MOV TEMPDOR,#50
MOV NUMBERDISPLAY,DORNUMBER
CALL DISPLAY
w
LOOPRIGHT:
MOV STEPPERPORT,#00001001B
CALL SPEED
w
MOV STEPPERPORT,#00001100B
CALL SPEED
w
MOV STEPPERPORT,#00000110B
CALL SPEED
MOV STEPPERPORT,#00000011B
CALL SPEED
DJNZ TEMPDOR,LOOPRIGHT
DJNZ DORNUMBER,RIGHT
MOV NUMBERDISPLAY,DORNUMBER
CALL DISPLAY
CLR BUSER
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ، ﺗﻮﻟﯿﺪ،ﻃﺮاﺣﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
CALL DELAY
SETB BUSER
JMP LOOPMAIN
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
r
+
; ----------------LEFT
.i
ﺍﻳﺠﺎﺩ ﺣﺮﻛﺖ ﻣﻮﺗﻮﺭ ﺑﻪ ﺳﻤﺖ ﭼﭗ
s
LEFT:
r
MOV TEMPDOR,#50
MOV NUMBERDISPLAY,DORNUMBER
e
CALL DISPLAY
k
LOOPLEFT:
MOV STEPPERPORT,#00000011B
a
CALL SPEED
MOV STEPPERPORT,#00000110B
lM
CALL SPEED
MOV STEPPERPORT,#00001100B
CALL SPEED
MOV STEPPERPORT,#00001001B
o
CALL SPEED
tr
DJNZ TEMPDOR,LOOPLEFT
DJNZ DORNUMBER,LEFT
MOV NUMBERDISPLAY,DORNUMBER
n
CALL DISPLAY
CLR BUSER
o
CALL DELAY
.C
SETB BUSER
JMP LOOPMAIN
;
w
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++
; ----------------SPEED
w
MOV R6,SPEEDNUMBER
LOOPSPEED:
MOV TH0,#0FCH
MOV TL0,#18H
SETB TR0
LOOP1S:JNB TF0,LOOP1S
CLR TR0
CLR TF0
; ------------STOP TEST
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ، ﺗﻮﻟﯿﺪ،ﻃﺮاﺣﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
CLR ROW4
;JNB COL2,PAUSE
SETB ROW4
; -------------------------------
r
DJNZ R6,LOOPSPEED
RET
.i
s
; ---------SCAN KEYBOARD ------------
KEYSCAN:
r
SETB ROW4
e
CLR ROW1
JNB COL1,KEY1
k
JNB COL2,KEY2
JNB COL3,KEY3
a
SETB ROW1
lM
CLR ROW2
JNB COL1,KEY4
JNB COL2,KEY5
o
JNB COL3,KEY6
SETB ROW2
tr
CLR ROW3
n
JNB COL1,KEY7
JNB COL2,KEY8
o
JNB COL3,KEY9
SETB ROW3
.C
CLR ROW4
JNB COL2,KEYZERO
w
SETB ROW4
JMP KEYSCAN
w
SETB ROW1
MOV TEMPKEYSCAN,#1
JMP KEYLOAD
KEY2:
SETB ROW1
MOV TEMPKEYSCAN,#2
JMP KEYLOAD
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ، ﺗﻮﻟﯿﺪ،ﻃﺮاﺣﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
KEY3:
SETB ROW1
MOV TEMPKEYSCAN,#3
JMP KEYLOAD
r
KEY4:
.i
SETB ROW2
s
MOV TEMPKEYSCAN,#4
JMP KEYLOAD
r
e
KEY5:
SETB ROW2
k
MOV TEMPKEYSCAN,#5
JMP KEYLOAD
a
lM
KEY6:
SETB ROW2
MOV TEMPKEYSCAN,#6
JMP KEYLOAD
o
KEY7:
tr
SETB ROW3
MOV TEMPKEYSCAN,#7
n
JMP KEYLOAD
o
KEY8:
SETB ROW3
.C
MOV TEMPKEYSCAN,#8
JMP KEYLOAD
w
KEY9:
SETB ROW3
w
MOV TEMPKEYSCAN,#9
JMP KEYLOAD
w
KEYZERO:
SETB ROW4
MOV TEMPKEYSCAN,#0
JMP KEYLOAD
; ------ MERG FIRST NUMBER & SECOND ------------
ﻭ ﻣﺤﺎﺳﺒﺎﺕ7seg ﺍﻳﺠﺎﺩ ﻳﻚ ﻋﺪﺩ ﺩﻭﺭﻗﻤﻲ ﺑﺮﺍﻱ
KEYLOAD:
JNB 07H,DAHGAN
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ، ﺗﻮﻟﯿﺪ،ﻃﺮاﺣﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
MOV A,TEMPKEYSCAN
MOV B,DAHGANKEYSCAN
ADD A,B
MOV NUMBERLOAD,A
r
MOV NUMBERDISPLAY,A
CALL DISPLAY
.i
CALL DELAY
s
CLR 07H
RET
r
e
DAHGAN:
MOV A,TEMPKEYSCAN
k
MOV B,#10
MUL AB
a
MOV DAHGANKEYSCAN,A
lM
SETB 07H
MOV NUMBERDISPLAY,A
CALL DISPLAY
CALL DELAY
o
JMP KEYSCAN
tr
DELAYDISPLAY:
n
MOV R7,#255
LOOPDISPLAY:
o
DJNZ R7,LOOPDISPLAY
RET
.C
MOV A,NUMBERDISPLAY
MOV B,#10
w
DIV AB
ORL B,#10H
ORL A,#20H
w
MOV SEGMENT1,B
MOV SEGMENT2,A
RET
MOV TL0,#0B0H
SETB TR0
LOOPDELAY:JNB TF0,LOOPDELAY
CLR TR0
r
CLR
TF0
.i
DJN
s
Z
DEL
r
AYC
e
OUN
TER,
k
LDK
RET
a
END
lM
o
tr
n
o
.C
w
w
ﺷﻤﺎﺗﻴ
ﻙ ﺑﺮﺩ
w
ﺁﻣﻮﺯﺷ
ﻱ
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
r
.i
s
r
e
k
a
lM
o
tr
n
o
.C
w
w
w
ﺁﺩﺭﺱ ﺁﺩﺭﺱ
ﺁﺩﺭﺱ ﺑﻴﺖ ﺁﺩﺭﺱ ﺑﻴﺖ
ﺑﺎﻳﺖ ﺑﺎﻳﺖ
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
7F FF
F0 F7 F6 F5 F4 F3 F2 F1 F0 B
r
E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC
ﻫﻤﻪ ﻣﻨﻈﻮﺭﻩRAMﺣﺎﻓﻈﻪ
.i
D0 D7 D6 D5 D4 D3 D2 D1 D0 PSW
s
r
30 B8 ---- ---- ---- BC BB BA B9 B8 IP
e
2F 7F 7E 7D 7C 7B 7A 79 78
k
2E 77 76 75 74 73 72 71 70 B0 B7 B6 B5 B4 B3 B2 B1 B0 P3
a
2D 6F 6E 6D 6C 6B 6A 69 68
lM
2C 67 66 65 64 63 62 61 60 A8 AF ---- ---- AC AB AA A9 A8 IE
2B 5F 5E 5D 5C 5B 5A 59 58
2A 57 56 55 54 53 52 51 50 A0 A7 A6 A5 A4 A3 A2 A1 A0 P2
o
27 3F 3E 3D 3C 3B 3A 39 38 98 9F 9E 9D 9C 9B 9A 99 98 SCON
26 37 36 35 34 33 32 31 30
n
25 2F 2E 2D 2C 2B 2A 29 28 90 97 96 95 94 93 92 91 90 P1
o
23 1F 1E 1D 1C 1B 1A 19 18 8D ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ TH1
22 17 16 15 14 13 12 11 10 8C ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ TH0
w
21 0F 0E 0D 0C 0B 0A 09 08 8B ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ TL1
20 07 06 05 04 03 02 01 00 8A ﺑﻴﺖ ﺁﺩﺭﺱ ﭘﺬﻳﺮ ﻧﻴﺴﺖ TL0
w
r
.i
s
r
e
k
a
lM
o
tr
n
o
.C
w
w
w
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
r
ﭘﺮﭼﻢ ﻧﻘﻠﻲ D7H PSW.7 CY
.i
ﭘﺮﭼﻢ ﻧﻘﻠﻲ ﻛﻤﻜﻲ D6H PSW.6 AC
s
r
ﭘﺮﭼﻢ 0 D5H PSW.5 F0
e
ﺑﻴﺖ ﺍﻧﺘﺨﺎﺏ ﺭﺟﻴﺴﺘﺮ ﺑﺎﻧﻚ١ D4H PSW.4 RS1
k
D3H PSW.3 RS0
a
ﺑﻴﺖ ﺍﻧﺘﺨﺎﺏ ﺭﺟﻴﺴﺘﺮ ﺑﺎﻧﻚ٠
lM
ﭘﺮﭼﻢ ﺳﺮﺭﻳﺰ D2H PSW.2 OV
r
.i
s
r
e
k
a
lM
o
tr
n
o
.C
w
w
w
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
r
ﭘﺮﭼﻢ ﻭﻗﻔﻪ ﺍﺭﺳﺎﻝ 99H SCON.1 TI
.i
ﭘﺮﭼﻢ ﻭﻗﻔﻪ ﺩﺭﻳﺎﻓﺖ 98H SCON.0 RI
s
r
ﺗﻮﺍﻧﺎﺳﺎﺯ ﻫﻤﺔ ﻭﻗﻔﻪ ﻫﺎ AFH IE.7 EA
e
ﺗﻮﺍﻧﺎﺳﺎﺯ ﻭﻗﻔﻪ ﺩﺭﮔﺎﻩ ﺳﺮﻳﺎﻝ ACH IE.4 ES
k
ﺗﻮﺍﻧﺎﺳﺎﺯ ﻭﻗﻔﻪ ﺗﺎﻳﻤﺮ 1 ABH IE.3 ETI
r
.i
s
r
e
k
a
lM
o
tr
n
o
.C
w
w
w
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
r
.i
s
r
e
k
a
lM
o
tr
n
o
.C
w
w
w
ﭘﯿﺸﺮو ﻧﻮآوران ﮐﺎوش
اﺗﻮﻣﺎﺳﯿﻮن ﺻﻨﻌﺘﯽ
ﻃﺮاﺣﯽ ،ﺗﻮﻟﯿﺪ ،اﺟﺮای ﭘﺮوژهﻫﺎی اﻟﮑﺘﺮوﻧﯿﮑﯽ
آﻣﻮزش دورهﻫﺎی ﺗﺨﺼﺼﯽ اﻟﮑﺘﺮوﻧﯿﮏ
r
.i
s
r
e
k
a
lM
o
tr
n
o
.C
w
w
w