السلام عليكم
عادة ما اكتب بعض البرامج ثم بعد اشهر او سنوات اضيعها بعد مسح الكمبيوتر لذلك قررت اني كلما اكتب برنامج اضعه في هذا المنتدى المكرم لكي استفيد وافيد
فمثلا اليوم اضع برنامجين مجربين عمليا احدهما لبيك جهاز ارسال و الاخر لبيك جهاز استقبال يتحكم بمحركين حيث في بيك جهاز الاستقبال المداخل هي RBO .. RB1.. RB2... RB3 و المخرج الذي يذهب الى جهاز ارسال FM بسيط هو RA0 و البرنامج يكون كالتالي
كود:
list p=16F84A
#include <p16F84A.inc>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
PORTB EQU 0x0006
TRISB EQU 0x0086 ;
STATUS EQU 0x0003 ;
PORTA EQU 0x0005 ;
TRISA EQU 0x0085 ;
AA EQU 0x000C
BB EQU 0x000D
CC EQU 0Eh
#DEFINE BANK1 BSF STATUS,05
#DEFINE BANK0 BCF STATUS,05
org 00H
GOTO STAR
ORG 04H
STAR
BANK1
MOVLW b'11111111'
MOVWF TRISB
MOVLW b'11110000'
MOVWF TRISA
BANK0
boucle
BSF PORTA,0 ;
CALL T1ms;
CALL T1ms;
BCF PORTA,0 ;
CALL T1ms ;
BTFSC PORTB,0 ;
BSF PORTA,0;
BTFSS PORTB,0
BCF PORTA,0
CALL T1ms
BTFSC PORTB,1
BSF PORTA,0
BTFSS PORTB,1
BCF PORTA,0
CALL T1ms
BTFSC PORTB,2
BSF PORTA,0
BTFSS PORTB,2
BCF PORTA,0
CALL T1ms
BTFSC PORTB,3
BSF PORTA,0
BTFSS PORTB,3
BCF PORTA,0
CALL T1ms
BCF PORTA,0
CALL T20MS
goto boucle
T1ms
movlw 0xf9
movwf AA
loop1
NOP
decfsz AA
goto loop1
RETURN
T20MS
movlw 0x14
movwf BB
loop3
CALL T1ms
DECFSZ BB
GOTO loop3
RETURN
end
اما في جهاز الاستقبال المصنوع بواسطة الدارة المندمجة MC3362
فالمدخل بالنسبة الى البيك هو RB0 اما المخارج فهي
RA0 ..RA1 RA3 RA2 وهي تتحكم في اتجاه دوران محركين ويكون البرنامج كالتالى
كود:
list p=16F84A
#include <p16F84A.inc>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
PORTB EQU 0x0006
TRISB EQU 0x0086 ;
STATUS EQU 0x0003 ;
PORTA EQU 0x0005 ;
TRISA EQU 0x0085 ;
STATUS EQU 0X0003
AA EQU 0x000C
BB EQU 0x000D
CC EQU 0Eh
DD EQU 0Fh
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#DEFINE BANK1 BSF STATUS,05
#DEFINE BANK0 BCF STATUS,05
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 00H
GOTO STAR
ORG 04H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
STAR
BANK1
MOVLW b'11111111'
MOVWF TRISB
MOVLW b'11110000'
MOVWF TRISA
;;;;;;;;;
BANK0
LOOPB
CLRF DD
LOOPA
BTFSS PORTB,0
INCF DD
BTFSC PORTB,0
GOTO LOOPB
CALL US200
MOVLW 0X0A
BCF STATUS,2
SUBWF DD,W
BTFSS STATUS,2
GOTO LOOPA
;;;;;;;;;
CLRF DD
LOOP2
BTFSC PORTB,0
INCF DD
BTFSS PORTB,0
GOTO LOOPB
CALL US5
CALL US5
CALL US5
CALL US5
MOVLW 0X04
BCF STATUS,02
SUBWF DD,W
CALL US200
BTFSS STATUS,02
GOTO LOOP2
;;;;;;;;;;;
CALL US200
CALL US200
BTFSC PORTB,0
BSF PORTA,0
BTFSS PORTB,0
BCF PORTA,0
;;;;;;;;;;;
CALL T1ms
BTFSC PORTB,0
BSF PORTA,1
BTFSS PORTB,0
BCF PORTA,1
;;;;;;;;;;;
CALL T1ms
BTFSC PORTB,0
BSF PORTA,2
BTFSS PORTB,0
BCF PORTA,2
;;;;;;;;;;;
CALL T1ms
BTFSC PORTB,0
BSF PORTA,3
BTFSS PORTB,0
BCF PORTA,3
;;;;;;;;;;
CALL MS18
GOTO LOOPB
NOP
NOP
NOP
NOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MS18
movlw 0x13 ; ajuste
movwf BB
loop3
MOVLW 0xF8; ajuste fine
MOVWF AA ;
lop1
NOP
DECFSZ AA
GOTO lop1
DECFSZ BB
GOTO loop3
RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
T1ms
MOVLW 0xF6;
MOVWF AA ;
loop1
NOP
DECFSZ AA
GOTO loop1
RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
US200
movlw 0x31
movwf AA
loop4
NOP
decfsz AA
goto loop4
RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
US100
movlw 0x17
movwf AA
lop4
NOP
decfsz AA
goto lop4
NOP
NOP
RETURN
;;;;;;;;;
US5
NOP
NOP
NOP
NOP
NOP
RETURN
END
ملاحظة هامة هذا البرنامج لا يصلح تماما للتطبيقات التي تستدعي مستوى سلامة أمني كبير