Teknomerkez
Topics

PicASM and PIC16F628A with Bluetooth sending data

Author: Mehmet Yılmaz
Translator: Ulvi Asil Yılmaz
Date: 28.03.2017
English

With this circuit, the push-button information is sent to the phone via the HC-06 bluetooth module. The circuit must be fed with 5Vdc.

The circuit's work: When it press the first button when it is send "Teknomerkez - Teknoloji Merkezi" text to the phone.

When it press the second button it is send "Mehmet YILMAZ" text.

When it press the third button  it is send "ASM ile PIC16F628A ve Bluetooth ile veri gonderme" text.

You are can change this informations from ASM codes.

The circuit's schematic diagram:


The circuit's material list:

U1: 16F628A
Y1: 4 Mhz kristal
C1: 100nF
C2-C3: 22pF
SW1-SW3: Button
R1-R4: 10K rezistans
J1: HC-06 k Connector for Bluetooth connection.

The circuit's working picture:

The circuit's working video demonstration:


Assembly source codes for the circuit:

; ********* ***************************** *********
; PicASM and PIC16F628A with Bluetooth sending data
; Use the MPASM compiler
; Tarih: 28.03.2017 10:46:43
; http://teknomerkez.com/index.php?git=1738
; *************************************************
        TITLE "Pic ASM and PIC16F628A with Bluetooth sending data"
        LIST p=16F628A
        #INCLUDE <p16f628a.inc>
        __CONFIG _XT_OSC & _WDT_OFF & _PWRTE_OFF & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF

        CBLOCK  0x20    ;The variables are defining
        TR500MS1
        TR500MS2
        TR500MS3
        YOL
        ENDC

        ORG     0x00
        GOTO    BASLA

BASLA           ;Starting point
        CLRF    PORTA
        CLRF    PORTB
        BANKSEL TRISA
        MOVLW   b'11111111'
        MOVWF   TRISA
        MOVLW   b'00000000'
        MOVWF   TRISB
        BANKSEL SPBRG
        MOVLW   d'25'
        MOVWF   SPBRG
        MOVLW   b'00100100'
        MOVWF   TXSTA
        BANKSEL RCSTA
        BSF     RCSTA,SPEN
        BANKSEL CMCON
        MOVLW   0x07
        MOVWF   CMCON
        GOTO    GOREVLER

GOREVLER        ;Initially transactions are here
        BTFSS   PORTA,0
        GOTO    TR_ISE0
        BSF     PORTB,2
        MOVLW   'T'
        CALL    SERIPORT_GONDER
        MOVLW   'e'
        CALL    SERIPORT_GONDER
        MOVLW   'k'
        CALL    SERIPORT_GONDER
        MOVLW   'n'
        CALL    SERIPORT_GONDER
        MOVLW   'o'
        CALL    SERIPORT_GONDER
        MOVLW   'm'
        CALL    SERIPORT_GONDER
        MOVLW   'e'
        CALL    SERIPORT_GONDER
        MOVLW   'r'
        CALL    SERIPORT_GONDER
        MOVLW   'k'
        CALL    SERIPORT_GONDER
        MOVLW   'e'
        CALL    SERIPORT_GONDER
        MOVLW   'z'
        CALL    SERIPORT_GONDER
        MOVLW   ' '
        CALL    SERIPORT_GONDER
        MOVLW   '-'
        CALL    SERIPORT_GONDER
        MOVLW   ' '
        CALL    SERIPORT_GONDER
        MOVLW   'T'
        CALL    SERIPORT_GONDER
        MOVLW   'e'
        CALL    SERIPORT_GONDER
        MOVLW   'k'
        CALL    SERIPORT_GONDER
        MOVLW   'n'
        CALL    SERIPORT_GONDER
        MOVLW   'o'
        CALL    SERIPORT_GONDER
        MOVLW   'l'
        CALL    SERIPORT_GONDER
        MOVLW   'o'
        CALL    SERIPORT_GONDER
        MOVLW   'j'
        CALL    SERIPORT_GONDER
        MOVLW   'i'
        CALL    SERIPORT_GONDER
        MOVLW   ' '
        CALL    SERIPORT_GONDER
        MOVLW   'M'
        CALL    SERIPORT_GONDER
        MOVLW   'e'
        CALL    SERIPORT_GONDER
        MOVLW   'r'
        CALL    SERIPORT_GONDER
        MOVLW   'k'
        CALL    SERIPORT_GONDER
        MOVLW   'e'
        CALL    SERIPORT_GONDER
        MOVLW   'z'
        CALL    SERIPORT_GONDER
        MOVLW   'i'
        CALL    SERIPORT_GONDER
        BSF     PORTB,2
        MOVLW   d'13'
        CALL    SERIPORT_GONDER
        BSF     PORTB,2
        MOVLW   d'10'
        CALL    SERIPORT_GONDER
        CALL    BEKLE500MS
TR_ISE0
        BTFSS   PORTA,1
        GOTO    TR_ISE1
        BSF     PORTB,2
        MOVLW   'M'
        CALL    SERIPORT_GONDER
        MOVLW   'e'
        CALL    SERIPORT_GONDER
        MOVLW   'h'
        CALL    SERIPORT_GONDER
        MOVLW   'm'
        CALL    SERIPORT_GONDER
        MOVLW   'e'
        CALL    SERIPORT_GONDER
        MOVLW   't'
        CALL    SERIPORT_GONDER
        MOVLW   ' '
        CALL    SERIPORT_GONDER
        MOVLW   'Y'
        CALL    SERIPORT_GONDER
        MOVLW   'I'
        CALL    SERIPORT_GONDER
        MOVLW   'L'
        CALL    SERIPORT_GONDER
        MOVLW   'M'
        CALL    SERIPORT_GONDER
        MOVLW   'A'
        CALL    SERIPORT_GONDER
        MOVLW   'Z'
        CALL    SERIPORT_GONDER
        BSF     PORTB,2
        MOVLW   d'13'
        CALL    SERIPORT_GONDER
        BSF     PORTB,2
        MOVLW   d'10'
        CALL    SERIPORT_GONDER
        CALL    BEKLE500MS
TR_ISE1
        BTFSS   PORTA,2
        GOTO    TR_ISE2
        BSF     PORTB,2
        MOVLW   'A'
        CALL    SERIPORT_GONDER
        MOVLW   'S'
        CALL    SERIPORT_GONDER
        MOVLW   'M'
        CALL    SERIPORT_GONDER
        MOVLW   ' '
        CALL    SERIPORT_GONDER
        MOVLW   'i'
        CALL    SERIPORT_GONDER
        MOVLW   'l'
        CALL    SERIPORT_GONDER
        MOVLW   'e'
        CALL    SERIPORT_GONDER
        MOVLW   ' '
        CALL    SERIPORT_GONDER
        MOVLW   'P'
        CALL    SERIPORT_GONDER
        MOVLW   'I'
        CALL    SERIPORT_GONDER
        MOVLW   'C'
        CALL    SERIPORT_GONDER
        MOVLW   '1'
        CALL    SERIPORT_GONDER
        MOVLW   '6'
        CALL    SERIPORT_GONDER
        MOVLW   'F'
        CALL    SERIPORT_GONDER
        MOVLW   '6'
        CALL    SERIPORT_GONDER
        MOVLW   '2'
        CALL    SERIPORT_GONDER
        MOVLW   '8'
        CALL    SERIPORT_GONDER
        MOVLW   'A'
        CALL    SERIPORT_GONDER
        MOVLW   ' '
        CALL    SERIPORT_GONDER
        MOVLW   'v'
        CALL    SERIPORT_GONDER
        MOVLW   'e'
        CALL    SERIPORT_GONDER
        MOVLW   ' '
        CALL    SERIPORT_GONDER
        MOVLW   'B'
        CALL    SERIPORT_GONDER
        MOVLW   'l'
        CALL    SERIPORT_GONDER
        MOVLW   'u'
        CALL    SERIPORT_GONDER
        MOVLW   'e'
        CALL    SERIPORT_GONDER
        MOVLW   't'
        CALL    SERIPORT_GONDER
        MOVLW   'o'
        CALL    SERIPORT_GONDER
        MOVLW   'o'
        CALL    SERIPORT_GONDER
        MOVLW   't'
        CALL    SERIPORT_GONDER
        MOVLW   'h'
        CALL    SERIPORT_GONDER
        MOVLW   ' '
        CALL    SERIPORT_GONDER
        MOVLW   'i'
        CALL    SERIPORT_GONDER
        MOVLW   'l'
        CALL    SERIPORT_GONDER
        MOVLW   'e'
        CALL    SERIPORT_GONDER
        MOVLW   ' '
        CALL    SERIPORT_GONDER
        MOVLW   'v'
        CALL    SERIPORT_GONDER
        MOVLW   'e'
        CALL    SERIPORT_GONDER
        MOVLW   'r'
        CALL    SERIPORT_GONDER
        MOVLW   'i'
        CALL    SERIPORT_GONDER
        MOVLW   ' '
        CALL    SERIPORT_GONDER
        MOVLW   'g'
        CALL    SERIPORT_GONDER
        MOVLW   'o'
        CALL    SERIPORT_GONDER
        MOVLW   'n'
        CALL    SERIPORT_GONDER
        MOVLW   'd'
        CALL    SERIPORT_GONDER
        MOVLW   'e'
        CALL    SERIPORT_GONDER
        MOVLW   'r'
        CALL    SERIPORT_GONDER
        MOVLW   'm'
        CALL    SERIPORT_GONDER
        MOVLW   'e'
        CALL    SERIPORT_GONDER
        BSF     PORTB,2
        MOVLW   d'13'
        CALL    SERIPORT_GONDER
        BSF     PORTB,2
        MOVLW   d'10'
        CALL    SERIPORT_GONDER
        CALL    BEKLE500MS
TR_ISE2
        GOTO    GOREVLER

SERIPORT_GONDER
        MOVWF   TXREG
        BANKSEL TXSTA
SERIPORT_TX_KONTROL
        BTFSS   TXSTA,TRMT
        GOTO    SERIPORT_TX_KONTROL
        BANKSEL PORTB
        RETURN

BEKLE500MS      ;Wait 500ms
        MOVLW   d'5'
        MOVWF   TR500MS1
BEKLE500MS1
        MOVLW   d'199'
        MOVWF   TR500MS2
BEKLE500MS2
        MOVLW   d'166'
        MOVWF   TR500MS3
BEKLE500MS3
        DECFSZ  TR500MS3, F
        GOTO    BEKLE500MS3
        DECFSZ  TR500MS2, F
        GOTO    BEKLE500MS2
        DECFSZ  TR500MS1, F
        GOTO    BEKLE500MS1
        RETURN
        
        END     ; End the program

Working HEX file:

:020000040000FA
:1000000001288501860183160313FF308500003027
:100010008600831603131930990024309800831248
:10002000031398178312031307309F001728051C2A
:100030005F2806155430F0206530F0206B30F0203A
:100040006E30F0206F30F0206D30F0206530F02001
:100050007230F0206B30F0206530F0207A30F020E4
:100060002030F0202D30F0202030F0205430F020CF
:100070006530F0206B30F0206E30F0206F30F020D3
:100080006C30F0206F30F0206A30F0206930F020C2
:100090002030F0204D30F0206530F0207230F0201C
:1000A0006B30F0206530F0207A30F0206930F0209D
:1000B00006150D30F02006150A30F020F820851CBA
:1000C000832806154D30F0206530F0206830F02090
:1000D0006D30F0206530F0207430F0202030F020BA
:1000E0005930F0204930F0204C30F0204D30F020D5
:1000F0004130F0205A30F02006150D30F020061562
:100100000A30F020F820051DEF2806154130F020B8
:100110005330F0204D30F0202030F0206930F020B6
:100120006C30F0206530F0202030F0205030F0208E
:100130004930F0204330F0203130F0203630F020CC
:100140004630F0203630F0203230F0203830F020C9
:100150004130F0202030F0207630F0206530F02063
:100160002030F0204230F0206C30F0207530F0204C
:100170006530F0207430F0206F30F0206F30F020C8
:100180007430F0206830F0202030F0206930F0200A
:100190006C30F0206530F0202030F0207630F020F8
:1001A0006530F0207230F0206930F0202030F020EF
:1001B0006730F0206F30F0206E30F0206430F02097
:1001C0006530F0207230F0206D30F0206530F02086
:1001D00006150D30F02006150A30F020F8201728FB
:1001E000990083160313981CF32883120313080045
:1001F0000530A000C730A100A630A200A20BFE2847
:0A020000A10BFC28A00BFA2808004F
:04020A000034003488
:02400E00293F48
:00000001FF


Comments

Khalid Rossan - 08.12.2020
Very interesting project and very easy to understand.
Do you have a circuit and code for the PIC16F628A to RECEIVE data from a phone application (Bluetooth Control)? The idea is to activate relays on the board when the phone app sends a letter or number. This project will act as a remote control. Thank you for your kindness.

Leave a comment

Name
E-mail
Your comment
Security Code
 
All areas must be filled. Your comment will be published after being checked. The e-mail will not be published.