السلام عليكم
دارة اشارات المرور تجريبية:
1- الدارة:
2- البرنامج بلغة التجميع:
كود:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Signalisation routière double: 3 Feux (Rouge-Orange-Vert)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LIST p=16f84a
#include <p16f84a.inc>
__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; VARIABLES
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CBLOCK 0x0C
cmpt1 : 1
cmpt2 : 1
cmpt3 : 1
ENDC
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;DEMARRAGE SUR RESET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
org 0x000 ; Adresse de départ après reset
goto init ; Adresse 0: initialiser
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Initialisation
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
init
bcf STATUS,RP0
CLRF PORTA
CLRF PORTB
bsf STATUS,RP0
MOVLW b'00000001'
MOVWF TRISB
goto start
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Temporisation
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
T_OR
nop
movlw d'167'
movwf cmpt3
bor3
movlw d'164'
movwf cmpt2
bor2
movlw d'23'
movwf cmpt1
bor1
decfsz cmpt1,f
goto bor1
decfsz cmpt2,f
goto bor2
decfsz cmpt3,f
goto bor3
return
;;;
T_vert
nop
movlw d'185'
movwf cmpt3
bv3
movlw d'230'
movwf cmpt2
bv2
movlw d'77'
movwf cmpt1
bv1
decfsz cmpt1,f
goto bv1
decfsz cmpt2,f
goto bv2
decfsz cmpt3,f
goto bv3
return
;;;
T_cli
nop
movlw d'123'
movwf cmpt3
bcli3
movlw d'131'
movwf cmpt2
bcli2
movlw d'9'
movwf cmpt1
bcli1
decfsz cmpt1,f
goto bcli1
decfsz cmpt2,f
goto bcli2
decfsz cmpt3,f
goto bcli3
return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Programme principal
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
start
bcf STATUS,RP0
bsf PORTB,3
bsf PORTB,4
call T_vert
bcf PORTB,4
call T_cli
bsf PORTB,4
call T_cli
bcf PORTB,4
call T_cli
bsf PORTB,4
call T_cli
bcf PORTB,4
bsf PORTB,5
call T_OR
movlw b'01000011'
movwf PORTB
bsf PORTB,1
call T_vert
bcf PORTB,1
call T_cli
bsf PORTB,1
call T_cli
bcf PORTB,1
call T_cli
bsf PORTB,1
call T_cli
bcf PORTB,1
bsf PORTB,2
call T_OR
bcf PORTB,2
bcf PORTB,6
goto start
END ; fin de programme
ملحوظة:
1 / اعتماد الوضع الصحيح للاوامر والتعليمات عند النقل الى mplab
(الكلمات البارزة في الخانة الاولى، والباقي في الخانة الثانية من الجدول الافتراضي )
2 / الانتباه الى "حساسية الاحرف" داخل mplab .
تحياتي ..