You are on page 1of 18

‫א‬ ‫א‬

‫ﺍﻟﺘﺠﺎﺭﺏ ﺍﻟﻌﻤﻠﻴﺔ‬

‫א‬ ‫א‬

Programming
Embedded Systems Microcontroller

You Can Practice Microcontroller Programming Easily Now!


Thursday, March 12, 2009

 
  
‫א‬‫א‬  ‫א‬
‫א‬
 

Exxp.14: 7-Seggment Singgle Display ‫א‬‫א‬ ‫א‬


W‫א‬‫ א‬
‫א‬

 W‫א‬‫א‬
 KE7-SegmenntF 

 W‫א‬
 

 
 W‫א‬‫א‬

‫א‬
 W‫א‬‫א‬‫א‬ 

  K0 – 9 ‫א‬ J1
  K0 – 999 ‫א‬ J2
K0 – 9999 ‫א‬ J3
،‫א‬‫א‬‫א‬‫א‬‫א‬ 
‫א‬،
‫א‬ ‫א‬
 K‫א‬
 ‫א‬
 K
‫א‬‫א‬
‫א‬‫א‬‫א‬
‫א‬‫א‬
‫א‬

‫א‬‫א‬
‫א‬ 2   
‫א‬‫א‬‫א‬
 
  Pra
actical Class 5
 5   Prrogramming M
 Microcontrolllers
 

 
،E
F
‫א‬‫א‬‫א‬
K‫א‬
 KECCF
ECAF
،
‫א‬‫א‬

 K
‫א‬‫א‬‫א‬،
‫א‬‫א‬

‫א‬
‫א‬
‫א‬
‫א‬‫א‬ ‫א‬
‫אא‬‫א‬‫אא‬
 W‫א‬
‫א‬‫א‬‫א‬،EA,…..,,HF

  
 

‫א‬B,C‫א‬،‫א‬‫א‬E1F ‫א‬ 
 K‫א‬

 
 
‫אא‬PortC‫א‬‫א‬
 ‫א‬ 
 
 W‫א‬‫א‬PortD
P ‫א‬‫אא‬
  Facculty of Electrrical and Electtronic Eng.
 
 3   Automatiic Control & A
Automation Dept.
  
‫א‬‫א‬  ‫א‬
‫א‬
 

 


،E
‫א‬‫א‬ ‫א‬F ‫א‬‫א‬ 
K‫א‬‫א‬‫א‬

  PortC ‫א‬‫א‬
 ‫א‬ ‫א‬‫א‬
:‫ اﻟﻘﻄﻊ اﻟﱵ ﱔ ﰲ ﺣﺎةل ﲻﲻﻞ‬7-H
7 6-G 5-F 4--E 3-D 2-C 1-BB 0-A  
 

A.BB.C.D.E.F 1 1 0 0 0 0 0 0 0
B.C 1 1 1 1 1 0 0 1 1
A.BB.D.E.G 1 0 1 0 0 1 0 0 2
A.BB.C.D.G 1 0 1 1 0 0 0 0 3
B
B.C.F.G 1 0 0 1 1 0 0 1 4
A.CC.D.F.G 1 0 0 1 0 0 1 0 5
A.CC.D.E.F.G 1 0 0 0 0 0 1 0 6
A
A.B.C 1 1 1 1 1 0 0 0 7
A.B.CC.D.E.F.G 1 0 0 0 0 0 0 0 8
A.BB.C.D.F.G 1 0 0 1 0 0 0 0 9

‫א‬‫א‬
‫א‬ 4   
‫א‬‫א‬‫א‬
 
  Pra
actical Class 5
 5   Prrogramming M
 Microcontrolllers
 

 W

‫א‬‫א‬

&
&HC0 &
&HF9 &
&HA4 &
&HB0 &H99 &H
H92 &H
H82 &H
HF8 &H880 &H990
 


‫א‬،E‫א‬‫א‬‫א‬F ‫א‬
 ‫א‬
‫א‬

 K
‫א‬‫א‬
‫א‬
‫א‬‫א‬
‫א‬،

  :‫اﻟﻘﻄﻊ اﻟﱵ ﱔ ﰲ ﺣﺎةل ﲻﲻﻞ‬   PortC ‫א‬‫א‬


 ‫א‬ ‫א‬‫א‬
7
7-H 6-G 5-F 4--E 3-D 2-C 1-BB 0-A  

A.BB.C.D.E.F 0  0 1 1  1  1  1  1  0
B.C 0  0  0  0  0  1  1  0 1
A.BB.D.E.G 0  1  0 1  1  0 1  1  2
A.BB.C.D.G 0  1  0  0  1  1  1  1  3
B
B.C.F.G 0  1  1  0  0  1  1  0 4
A.CC.D.F.G 0  1  1  0 1  1  0  1  5
A.CC.D.E.F.G 0  1  1  1  1  1  0  1  6
A
A.B.C 0  0  0  0  0  1  1  1  7
A.B.CC.D.E.F.G 0  1  1  1 1  1  1  1  8
A.BB.C.D.F.G 0  1  1  0 1  1  1  1  9
 
 W

‫א‬‫א‬

&
&H3F &
&H06 &H5B &H
H4F &H
H66 &H
H6D &H
H7D &H
H07 &H77F &H66F
 


 
‫א‬
W
 KE2555 DECF&H
HFF ‫א‬‫א‬
 
  Facculty of Electrrical and Electtronic Eng.
 
 5   Automatiic Control & A
Automation Dept.
  
‫א‬‫א‬  ‫א‬
‫א‬
 

 W‫א‬‫א‬
 ،ELUTT: Look-Up TableF     
 
‫א‬  
  ‫א‬
  
 K‫א‬‫א‬‫א‬‫א‬‫א‬‫א‬

 ‫א‬‫א‬  ‫א‬
 ‫א‬‫א‬EE،F 
ata var1 , … , varn
Da
 .0 ‫א‬‫א‬‫א‬،
lab
bel ‫א‬  Data  LU
UT 

va
ar = Loo dex , la
okup(Ind abel)
 KIn
ndex ‫א‬

‫א‬  Data  
 LUT 
  

Va
ar = Loo
okupstr(Index , Label)
 KIndex‫א‬label
 
  EvalueF  EIndexF 
  
‫א‬
Va
ar = Look
kdown(value,Label,Entries)
)  ‫א‬  label‫א‬ Data
 KEEn
ntriesF‫א‬
      E‫א‬F 
  

estore Label
Re L ‫א‬ la
abel ‫אא‬ Data
a LU
UT
arW‫א‬‫א‬
Read Va
 ‫א‬
  Data   LUT   
‫א‬ ‫א‬ ‫א‬
ead Var
Re  
  Re
estore ‫א‬ ‫א‬
  
‫א‬
 KVar 
‫א‬
 
 
 
 
 
 
 
 
 
 
 
 

‫א‬‫א‬
‫א‬ 6   
‫א‬‫א‬‫א‬
 
  Practical Class 5   Programming Microcontrollers
 

 WE0-9‫א‬F‫א‬‫א‬
 KSW34‫א‬4‫א‬ W‫א‬
$regfile = "m128def.dat"
$crystal = 8000000  K‫א‬
'---------------------

Config Porta = Output  K‫א‬‫א‬‫א‬‫א‬


Segment Alias Porta
Porta = &H81
E&H81F‫א‬‫א‬‫א‬‫א‬
 ‫א‬‫א‬
Config Portc.4 = Output
Ctr1 Alias Portc.4  
Reset Ctr1
'--------------------- ‫א‬‫א‬‫א‬
Dim I As Byte
'---------------------
Do
 ‫א‬
For I = 0 To 9
Segment = Lookup(i , Seg)
Waitms 1000
Next I  W‫א‬‫א‬
Loop
ESegF‫א‬EDataF‫א‬‫א‬‫א‬
End
'---------------------  K،ELookupF‫א‬‫א‬
Seg:
Data &H81 , &HF3 , &H49 , &H61 , &H33 ,
&H25 , &H05 , &HF1 , &H01 , &H21
 K‫א‬

  Faculty of Electrical and Electronic Eng.
 
 7   Automatic Control & Automation Dept.
  
‫א‬‫א‬  ‫א‬
‫א‬
 

 WE0 – 99 ‫א‬
 F‫א‬‫אא‬
 KSW334‫ א‬4,5 ‫א‬  W
‫א‬

regfile = "m128def.dat"
$r
crystal = 8000000
$c  K
‫א‬
---------------------
'-
onfig Por
Co rta = Output
Se
egment Al
lias Porta ‫א‬
 ‫א‬‫א‬‫א‬
Po
orta = &H
H81
 K‫א‬
onfig Por
Co
Di
rtc.4 = Output
isplay1 Alias
A Portc.4
E&H81F‫א‬‫א‬‫א‬‫א‬

‫א‬‫א‬
onfig Por
Co rtc.5 = Output
Di
isplay2 Alias
A Portc.5 ‫א‬
‫א‬
‫א‬

et Displa
Se ay1 : Set Display2
2  K‫א‬‫א‬
---------------------
'-
im I As Byte
Di B , J As Byte  K‫א‬

'-
---------------------
 ‫א‬
Do
o
For I = 0 To 9
For J = 0 To 9
S
Segment = Lookup(i , Seg)
R
Reset Display1 : Waitms
W 200
S
Set Display1 W
‫א‬‫א‬
Segment = Lookup(j , Seg)
S ESegF ‫א‬ED
DataF‫א‬‫א‬‫א‬
R
Reset Display2 : Waitms
W 200
S
Set Display2  K،ELLookupF‫א‬‫א‬
Nextt J
Next I  K‫א‬‫א‬
oop
Lo  K‫א‬
‫א‬‫א‬
En
nd  KKK‫א‬‫א‬
'-
---------------------
Se
eg:
ata &H81 , &HF3 , &H49 , &H61 , &H
Da H33 ,
H25 , &H05 , &HF1 , &H01 , &H21
&H

 K‫א‬


‫א‬‫א‬
‫א‬ 8   
‫א‬‫א‬‫א‬
 
  Practical Class 5   Programming Microcontrollers
 

 WE0 – 9999‫א‬F‫א‬‫א‬
$regfile = "m128def.dat"
$crystal = 8000000  K‫א‬
'---------------------
Config Porta = Output
Segment Alias Porta ‫א‬‫א‬‫א‬‫א‬
Porta = &H81
 K‫א‬
Config Portc = &B11110000
Display1 Alias Portc.4 E&H81F‫א‬‫א‬‫א‬‫א‬
Display2 Alias Portc.5
Display3 Alias Portc.6  ‫א‬‫א‬
Display4 Alias Portc.7
‫א‬‫א‬
Set Display1 : Set Display2
Set Display3 : Set Display4  K‫א‬‫א‬
'---------------------  K‫א‬
Dim I As Byte , J As Byte
Dim K As Byte , L As Byte
'---------------------
Do  ‫א‬
For I = 0 To 9
For J = 0 To 9
For K = 0 To 9
For L = 0 To 9
Segment = Lookup(i , Seg)
Reset Display1 : Waitms 7
Set Display1

Segment = Lookup(j , Seg)


Reset Display2 : Waitms 7
Set Display2
 W‫א‬‫א‬
Segment = Lookup(k , Seg)
Reset Display3 : Waitms 7
ESegF‫א‬EDataF‫א‬‫א‬‫א‬
Set Display3  K،ELookupF‫א‬‫א‬
Segment = Lookup(l , Seg)  K‫א‬‫א‬
Reset Display4 : Waitms 7
Set Display4  K‫א‬‫א‬‫א‬
Next L
Next K  KKKK‫א‬
Next J
Next I  KKK‫א‬‫א‬
Loop
End
'---------------------
Seg:
Data &H81 , &HF3 , &H49 , &H61 , &H33 ,
&H25 , &H05 , &HF1 , &H01 , &H21

 K‫א‬

  Faculty of Electrical and Electronic Eng.
 
 9   Automatic Control & Automation Dept.
  
‫א‬‫א‬  ‫א‬
‫א‬
 

Exxp.15: Real Time Clocck  ‫א‬‫א‬


W
‫ א‬
‫א‬
 W
‫א‬‫א‬
 K‫א‬‫א‬
 

 W
‫א‬

 
 W

 KSW2‫א‬ 

 
 W‫א‬‫א‬
 
‫א‬‫א‬ 


 K
‫א‬
‫א‬

‫א‬ ‫ א‬ERTCF ‫א‬ ‫א‬  ‫א‬  
   

‫א‬  32.786
3 KHZZ   ‫א‬  
  

 KTOSC
C1,2


‫א‬‫א‬
‫א‬ 10   
‫א‬‫א‬‫א‬
 
  Practical Class 5   Programming Microcontrollers
 

 W‫א‬‫א‬
 K‫א‬‫א‬‫א‬‫א‬‫א‬‫א‬‫א‬‫א‬‫א‬
 ‫א‬‫א‬  ‫א‬
Config Clock = Soft | User  KE|‫א‬F‫א‬‫א‬
Config Date = Dmy , Separator = Char ‫א‬‫א‬‫א‬‫א‬‫א‬‫א‬
Time$ = "hh:mm:ss"  K‫א‬‫א‬‫א‬
Date$ = "mm/dd/yy"  K‫א‬‫א‬‫א‬
Var = Time$  ‫א‬‫א‬‫א‬
Var = Date$  ‫א‬‫א‬‫א‬
 
 W‫א‬‫א‬
$regfile = "m128def.dat"
$crystal = 8000000  K‫א‬
'----------------------
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 =
Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E
= Portc.2 , Rs = Portc.3
K‫א‬‫א‬‫א‬
Config Lcd = 20 * 4  ‫א‬
'----------------------
Config Clock = Soft
Config Date = Dmy , Separator = /  K‫א‬‫א‬‫א‬‫א‬
Enable Interrupts
 ‫א‬/‫א‬/‫א‬
Time$ = "16:59:00"
Date$ = "14/04/08"  
----------------------
Do  ‫א‬EF‫א‬‫א‬‫א‬
Print Time$
Print Date$  W‫א‬‫א‬
Lcd Time$ : Locate 2 , 1 : Lcd Date$ ‫א‬‫א‬‫א‬‫א‬
Wait 1 ‫א‬‫א‬‫א‬
Cls
Loop
 K‫א‬

  Faculty of Electrical and Electronic Eng.
 
  11   Automatic Control & Automation Dept.
  
‫א‬‫א‬  ‫א‬
‫א‬
 

Exxp.16: DACC using Laddder R-2R  ‫א‬


 ‫א‬‫א‬W
‫ א‬
‫א‬
 W
‫א‬‫א‬
 K‫א‬
 ‫א‬‫א‬‫א‬R ‫א‬‫א‬
R‐2R
 W
‫א‬

 

‫א‬‫א‬
‫א‬ 12   
‫א‬‫א‬‫א‬
 
  Practical Class 5   Programming Microcontrollers
 

 W
 K‫א‬SW37‫א‬
  K‫א‬‫א‬SW2‫א‬
 W‫א‬‫א‬
، 
 K‫א‬‫א‬‫א‬‫א‬
،‫א‬ ‫א‬     E0 or 1F       ‫א‬ ‫א‬ 
 K‫א‬‫א‬‫א‬‫א‬
0-255  ‫א‬ ‫א‬ ‫א‬  ‫א‬ ‫א‬  ،8-bit       
 K 0-5VDC‫א‬‫א‬‫א‬E00000000>>11111111F
VOUT = VREF x VAL / 2N
Digital Input 
0 ~ 255 

Analog Output 
0 ~ 5V 

 
 
 W‫א‬،8-bit
Vstep = VM / 2N = 5 / 255 = 0.019 Volt
‫א‬‫א‬‫א‬‫א‬‫א‬
 K‫א‬‫א‬‫א‬
Vout = Digval x Vstep
 W‫א‬ 1000 0001=129‫א‬
129 x 0.019 = 2.451V
  Faculty of Electrical and Electronic Eng.
 
  13   Automatic Control & Automation Dept.
  
‫א‬‫א‬  ‫א‬
‫א‬
 

 ‫א‬
‫א‬ 

 
 
 W‫א‬
‫א‬

 
 
 EV2F‫א‬ ‫א‬‫א‬EV1F ‫א‬ ‫א‬
‫א‬‫א‬‫א‬‫א‬

 
K
  
‫א‬
‫אא‬‫א‬‫א‬‫א‬
‫א‬‫א‬   ‫א‬ ‫א‬‫א‬  E‫א‬ F 
 K
‫א‬
‫א‬   ‫א‬ 
      J1
  ‫א‬    ،  ‫א‬
،E0-to--VccF 
 ‫א‬  
  

 K4.5V
V‫א‬ EVcc - 0.5VVF 

 
‫אא‬  J2
 
   
   ، 
‫א‬
KE3.9V ‫א‬F 
‫אא‬‫א‬ 
 
‫א‬‫א‬
‫א‬
‫א‬

 K5V
V6..5V
D7
D ‫א‬
‫א‬‫א‬
 K 0 to 2.5V ‫א‬


‫א‬‫א‬
‫א‬ 14   
‫א‬‫א‬‫א‬
 
  Practical Class 5   Programming Microcontrollers
 

5.5V ~ 12V 

 
 W‫א‬‫א‬
 K‫א‬‫א‬‫א‬‫א‬
 ‫א‬‫א‬  ‫א‬
 WKExF‫א‬
Var = Round(x) Round(2.3) = 2 , Round(2.8) = 3
Round(-2.3)= -2 , Round(-2.8) = -3
Var = Int(source) Ex: Int(134.567)=134  ‫א‬‫א‬
Var = Frac(source) Ex: Frac(134.567)=567  ‫א‬‫א‬
Var = Fix(x) EX: Fix(12.98)=12  K‫א‬‫א‬‫א‬ExF
Var=-1  x<0‫א‬KExF‫א‬
Var = Sgn(x)
Var=1  x>0‫א‬
 

 W‫א‬‫א‬
$regfile = "m128def.dat"
$crystal = 8000000  K‫א‬
'-----------------------
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 =
Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E
= Portc.2 , Rs = Portc.3
K‫א‬‫א‬‫א‬
Config Lcd = 20 * 4  ‫א‬
'----------------------
Config Porte = Output
Digital Alias Porte
'-----------------------
 K‫א‬‫א‬‫א‬
Dim I As Byte , V_out As Single  
Const Vlot_step = 5 / 255
'-----------------------  K‫א‬‫א‬‫א‬
Cls
Do
For I = 0 To 255
Digital = I  W‫א‬‫א‬
V_out = I * Vlot_step
Lcd "DAC OUT= " ; V_out EF‫א‬‫א‬
Wait 1 : Cls
Next I
 K‫א‬‫א‬
Loop ‫א‬‫א‬
End 
 K‫א‬‫א‬

  Faculty of Electrical and Electronic Eng.
 
  15   Automatic Control & Automation Dept.
  
‫א‬‫א‬  ‫א‬
‫א‬
 

Exxp.17: Anallog Comparrator  ‫א‬


 ‫א‬W‫ א‬
‫א‬
 W
‫א‬‫א‬
 K‫א‬‫א‬
‫א‬‫א‬‫א‬‫א‬‫א‬‫א‬

 W
‫א‬

 
 W 

 KSW2‫א‬ 

 K‫א‬‫א‬JP11, JP122EJumperssF‫א‬


 W‫א‬‫א‬
 
 K

‫א‬‫ א‬




‫א‬‫א‬
‫א‬ 16   
‫א‬‫א‬‫א‬
 
  Practical Class 5   Programming Microcontrollers
 

‫א‬‫א‬E‫א‬‫א‬F ANI0‫א‬‫א‬‫א‬‫א‬
‫א‬،High‫א‬‫א‬E ‫א‬‫א‬F  AIN1‫א‬
 KLow‫א‬‫א‬AIN0‫א‬‫א‬‫א‬ANI1‫א‬
‫א‬‫א‬‫א‬‫א‬‫א‬‫א‬‫א‬‫א‬‫א‬
 K‫א‬
‫א‬‫א‬  1‫א‬/‫א‬‫א‬
 K‫א‬‫א‬‫א‬‫א‬‫א‬‫א‬
 
 W‫א‬‫א‬
 K‫א‬‫א‬‫א‬‫א‬‫א‬‫א‬‫א‬‫א‬‫א‬
 ‫א‬‫א‬  ‫א‬
 ‫א‬‫א‬  | WEAci=On|offF
 K‫א‬
  1‫א‬  ??   WECompare=On|offF
 K‫א‬‫א‬‫א‬
W‫א‬WETriggerF
Config Aci= On|off ,     (Ain0 > Ain1) :Rising
Compare= On|off ,
Trigger = TOGGLE|RISING|FALLING ‫א‬‫א‬?Ain0?‫א‬‫א‬
K?Ain1?
 (Ain0 < Ain1) :Falling
‫א‬‫א‬?Ain0?‫א‬‫א‬
K?Ain1?
(Ain0 > Ain1 and Ain0 < Ain1) :Toggle
Enable Aci  K‫א‬‫א‬
   ‫א‬ ‫א‬    
On Aci label
 K?label?‫א‬‫א‬‫א‬
Start Ac  K‫א‬‫א‬
Stop Ac  K‫א‬‫א‬‫א‬
 ‫א‬‫א‬    ‫א‬ ‫א‬ ‫א‬  
Enable Interrupts
 K‫א‬
?Assembly?‫א‬‫א‬
nop
 K‫א‬‫א‬
 

  Faculty of Electrical and Electronic Eng.
 
  17   Automatic Control & Automation Dept.
  
‫א‬‫א‬  ‫א‬
‫א‬
 

 W‫א‬‫אא‬
regfile = "m128def.dat"
$r
crystal = 8000000
$c  K
‫א‬
-----------------------
'-
onfig Lcd
Co dpin = Pin , Db4 = Portc.4
4 , Db5 =
ortc.5 , Db6 = Portc.6 , Db7
Po
E = Portc.2 , Rs = Portc.3
D = Por
rtc.7 , K‫א‬‫א‬‫א‬

d = 20 * 4
onfig Lcd
Co  ‫א‬

onfig Aci
Co i = On , Compare = Off , Trigger
T =
Ri
ising ‫א‬

‫א‬‫א‬‫א‬
n Aci Isr
On r aci
nable Aci
En i  K
tart Ac
St
En
nable Int
terrupts ‫א‬
‫א‬
-----------------------
'-
im I As Byte
Di B
 K‫א‬
-----------------------
'-  ‫א‬‫א‬

Cl
ls
Do
o
nop 

‫א‬‫א‬

Lo
oop
En
nd  K

'-
-----------------------
 
sr aci:
Is
Cls
I = I + 1  ‫א‬
 ‫א‬
Lcd "ch
hange: " ; I
Waitms 100 
 ‫א‬‫א‬
Re
eturn
‫א‬
 

 

 


‫א‬‫א‬
‫א‬ 18   
‫א‬‫א‬‫א‬
 

You might also like