Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

migration from picBasic PRO to mikroC PRO

Status
Not open for further replies.

Lydia87

Newbie level 3
Joined
Dec 16, 2009
Messages
3
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Location
UK (Leeds)
Activity points
1,306
Hi all,

Can anyone help to translate this code to mikroC Pro.

'''''''''''''''''''''''''''''''''''''''''''''''''''''
' CMPS03 I2C with serial LCD03 '
' example in PicBasic PRO '
' Reads a rotation as 0 - 255 '
'''''''''''''''''''''''''''''''''''''''''''''''''''''

DEFINE OSC 8 ' 8mhz oscillator
DEFINE I2C_SLOW 1
DEFINE I2C_HOLD 1
DEFINE CHAR_PACING 102 ' 1 stop bit time to make 2 for LCD03

ver VAR BYTE ' To store software revision
w0 VAR word ' to store bearing data
b0 VAR w0.byte0 ' b0 is the low byte of word w0
b1 VAR w0.byte1 ' b1 is the high byte of word w0
b2 var byte ' Byte for storing decimal point of bearing

OUTPUT PORTC.1 ' RC1 tristate to output for lcd03

SEROUT PORTC.1,2,[12,4,1] ' Clear screen and hide cursor of LCD03
pause 1000

loop:
I2CREAD PORTC.4,PORTC.3,$C0,0,[ver] ' Read version number from CMPS03
SEROUT PORTC.1,2,[1,"Software v: ",#ver,13] ' Put it on the screen
pause 100
I2CREAD PORTC.4,PORTC.3,$C0,2,[b1,b0] ' Get the bearing as a value 0 - 3600
b2 = w0//10 ' Get the remainder of range this gives us our one decimal place of the range value
w0 = w0/10 ' Convert w0 into 0 - 360 range data
SEROUT PORTC.1,2,["bearing: ",#w0,".",#b2," "]' Display bearing data to the screen
goto loop

Best Wish

Lydia
 

For migration from one language to another, first of all, you have to learn 'basics' of the 'other' language.

Basic and C are different beasts and have different approach in software development.
 

Hello,
I managed to convert some statements from PICBasic to MikroC, however, you have to re-check the code yourself.

Check the attached *.doc* file for the conversion.

Hope this helps.
 

Great - seadolphine2000

Hi all,
I am new here and can anyone help to translate this code to mikroC Pro as well.
Advance thanks.

-------------------------------------------
INCLUDE "16F84A.INC"

RAM_START EQU 0000Ch
RAM_END EQU 0004Fh
RAM_BANKS EQU 00001h
BANK0_START EQU 0000Ch
BANK0_END EQU 0004Fh
EEPROM_START EQU 02100h
EEPROM_END EQU 0213Fh

R0 EQU RAM_START + 000h
R1 EQU RAM_START + 002h
R2 EQU RAM_START + 004h
R3 EQU RAM_START + 006h
R4 EQU RAM_START + 008h
R5 EQU RAM_START + 00Ah
R6 EQU RAM_START + 00Ch
R7 EQU RAM_START + 00Eh
R8 EQU RAM_START + 010h
T1 EQU RAM_START + 012h
T2 EQU RAM_START + 014h
T3 EQU RAM_START + 016h
T4 EQU RAM_START + 018h
FLAGS EQU RAM_START + 01Ah
GOP EQU RAM_START + 01Bh
RM1 EQU RAM_START + 01Ch
RM2 EQU RAM_START + 01Dh
RR1 EQU RAM_START + 01Eh
RR2 EQU RAM_START + 01Fh
_cms EQU RAM_START + 020h
_CycleCounter EQU RAM_START + 030h
_i EQU RAM_START + 031h
PB01 EQU RAM_START + 032h
PB02 EQU RAM_START + 033h
PB03 EQU RAM_START + 034h
_s EQU RAM_START + 035h
_PORTL EQU PORTB
_PORTH EQU PORTA
_TRISL EQU TRISB
_TRISH EQU TRISA
#define _MBtn _PORTA_0
#define _LBtn _PORTA_1
#define _RBtn _PORTA_2
#define _MLED _PORTA_3
#define _LMotorB _PORTB_0
#define _LMotorF _PORTB_1
#define _RMotorF _PORTB_2
#define _RMotorB _PORTB_3
#define _FSensor _PORTB_4
#define _RSensor _PORTB_5
#define _MSensor _PORTB_6
#define _LSensor _PORTB_7
#define _lmf PB01, 005h
#define _lmb PB01, 004h
#define _rmf PB02, 007h
#define _rmb PB02, 006h
#define _OnLine PB02, 005h
#define _MustTurn PB02, 003h
#define _MustTurnLeft PB02, 004h
#define _FastRotate PB01, 000h
#define _lls PB01, 003h
#define _lrs PB02, 000h
#define _lms PB01, 006h
#define _lcb PB01, 001h
#define _llb PB01, 002h
#define _lrb PB01, 007h
#define _ModeVar0 PB02, 001h
#define _ModeVar1 PB02, 002h
#define _schngd PB03, 000h
#define _PORTA_0 PORTA, 000h
#define _PORTA_1 PORTA, 001h
#define _PORTA_2 PORTA, 002h
#define _PORTA_3 PORTA, 003h
#define _PORTB_0 PORTB, 000h
#define _PORTB_1 PORTB, 001h
#define _PORTB_2 PORTB, 002h
#define _PORTB_3 PORTB, 003h
#define _PORTB_4 PORTB, 004h
#define _PORTB_5 PORTB, 005h
#define _PORTB_6 PORTB, 006h
#define _PORTB_7 PORTB, 007h
#define _s_2 _s, 002h
#define _s_6 _s, 006h
#define _s_0 _s, 000h
#define _s_1 _s, 001h
#define _s_4 _s, 004h
#define _s_5 _s, 005h
INCLUDE "LINEFO~1.MAC"
INCLUDE "PBPPIC14.LIB"

MOVE?CB 000h, PORTA
MOVE?CB 000h, PORTB
MOVE?CT 001h, _lmf
MOVE?CT 000h, _lmb
MOVE?CT 001h, _rmf
MOVE?CT 000h, _rmb
MOVE?CT 001h, _OnLine
MOVE?CT 000h, _MustTurn
MOVE?CT 000h, _MustTurnLeft
MOVE?CT 000h, _FastRotate
MOVE?CT 000h, _lls
MOVE?CT 000h, _lrs
MOVE?CT 000h, _lms
MOVE?CT 000h, _lcb
MOVE?CT 000h, _llb
MOVE?CT 000h, _lrb
MOVE?CT 000h, _ModeVar0
MOVE?CT 000h, _ModeVar1
MOVE?CB 000h, _CycleCounter
MOVE?CB 007h, TRISA
MOVE?CB 0F0h, TRISB

LABEL?L _main
CMPNE?TTB _LSensor, _MSensor, T1
CMPNE?TTB _RSensor, _MSensor, T2
LAND?BBW T1, T2, T2
CMPNE?TTB _LSensor, _FSensor, T3
CMPNE?TTB _RSensor, _FSensor, T4
LAND?BBW T3, T4, T4
LOR?WWW T2, T4, T4
CMPF?WL T4, L00001
MOVE?CT 001h, _lmf
MOVE?CT 000h, _lmb
MOVE?CT 001h, _rmf
MOVE?CT 000h, _rmb
MOVE?CT 001h, _OnLine
MOVE?CT 000h, _MustTurn
GOTO?L L00002
LABEL?L L00001
CMPNE?TCL _OnLine, 001h, L00003
MOVE?TT _LSensor, _lls
MOVE?TT _RSensor, _lrs
MOVE?TT _MSensor, _lms
MOVE?CT 000h, _OnLine
LABEL?L L00003
CMPNE?TCL _MustTurn, 001h, L00005
CMPNE?TCL _MustTurnLeft, 001h, L00007
MOVE?CT 000h, _lmf
MOVE?TT _FastRotate, _lmb
MOVE?CT 001h, _rmf
MOVE?CT 000h, _rmb
GOTO?L L00008
LABEL?L L00007
MOVE?CT 001h, _lmf
MOVE?CT 000h, _lmb
MOVE?CT 000h, _rmf
MOVE?TT _FastRotate, _rmb
LABEL?L L00008
GOTO?L L00006
LABEL?L L00005
CMPNE?TTB _LSensor, _lls, T1
CMPNE?TTB _RSensor, _lrs, T2
LOR?BBW T1, T2, T2
CMPF?WL T2, L00009
MOVE?CT 001h, _MustTurn
CMPEQ?TTL _RSensor, _lrs, L00011
MOVE?CT 000h, _MustTurnLeft
LABEL?L L00011
CMPEQ?TTL _LSensor, _lls, L00013
MOVE?CT 001h, _MustTurnLeft
LABEL?L L00013
LABEL?L L00009
LABEL?L L00006
LABEL?L L00002
CMPEQ?TCB _MBtn, 000h, T1
CMPEQ?TCB _lcb, 001h, T2
LAND?BBW T1, T2, T2
CMPF?WL T2, L00015
CMPEQ?TCB _ModeVar0, 001h, T1
CMPEQ?TCB _ModeVar1, 001h, T2
LAND?BBW T1, T2, T2
CMPF?WL T2, L00017
MOVE?CT 000h, _ModeVar0
MOVE?CT 000h, _ModeVar1
LOW?T _MLED
GOTO?L L00018
LABEL?L L00017
CMPEQ?TCB _ModeVar0, 001h, T1
CMPEQ?TCB _ModeVar1, 000h, T2
LAND?BBW T1, T2, T2
CMPF?WL T2, L00019
MOVE?CT 001h, _ModeVar1
MOVE?CB 010h, _i
LABEL?L L00021
CMPGT?BCL _i, 01Fh, L00022
READ?BB _i, _s
SUB?BCW _i, 010h, T2
SUB?CBW 0FFh, _s, T1
AIN?WBW T1, _cms, T2
NEXT?BCL _i, 001h, L00021
LABEL?L L00022
GOTO?L L00020
LABEL?L L00019
CMPEQ?TCB _ModeVar0, 000h, T1
CMPEQ?TCB _ModeVar1, 000h, T2
LAND?BBW T1, T2, T2
CMPF?WL T2, L00023
MOVE?CT 001h, _ModeVar0
HIGH?T _MLED
MOVE?CB 000h, _i
LABEL?L L00025
CMPGT?BCL _i, 00Fh, L00026
READ?BB _i, _s
SUB?CBW 0FFh, _s, T1
AIN?WBB T1, _cms, _i
NEXT?BCL _i, 001h, L00025
LABEL?L L00026
LABEL?L L00023
LABEL?L L00020
LABEL?L L00018
MOVE?CT 000h, _lcb
LABEL?L L00015
CMPNE?TCL _MBtn, 001h, L00027
MOVE?CT 001h, _lcb
LABEL?L L00027
CMPEQ?TCB _ModeVar0, 001h, T1
CMPEQ?TCB _ModeVar1, 001h, T2
LAND?BBW T1, T2, T2
CMPF?WL T2, L00029
CMPGE?BCL _CycleCounter, 055h, L00031
HIGH?T _MLED
GOTO?L L00032
LABEL?L L00031
LOW?T _MLED
LABEL?L L00032
LABEL?L L00029
CMPNE?TCL _ModeVar0, 001h, L00033
MOVE?CB 000h, _i
CMPNE?TCL _ModeVar1, 000h, L00035
CMPNE?TCL _lmf, 001h, L00037
ADD?BCB _i, 008h, _i
LABEL?L L00037
CMPNE?TCL _lmb, 001h, L00039
ADD?BCB _i, 004h, _i
LABEL?L L00039
CMPNE?TCL _rmf, 001h, L00041
ADD?BCB _i, 002h, _i
LABEL?L L00041
CMPNE?TCL _rmb, 001h, L00043
ADD?BCB _i, 001h, _i
LABEL?L L00043
GOTO?L L00036
LABEL?L L00035
CMPNE?TCL _RSensor, 001h, L00045
ADD?BCB _i, 008h, _i
LABEL?L L00045
CMPNE?TCL _MSensor, 001h, L00047
ADD?BCB _i, 004h, _i
LABEL?L L00047
CMPNE?TCL _LSensor, 001h, L00049
ADD?BCB _i, 002h, _i
LABEL?L L00049
CMPNE?TCL _FSensor, 001h, L00051
ADD?BCB _i, 001h, _i
LABEL?L L00051
LABEL?L L00036
AOUT?BBB _cms, _i, _s
MOVE?CT 000h, _schngd
CMPEQ?TCB _LBtn, 000h, T1
CMPEQ?TCB _llb, 001h, T2
LAND?BBW T1, T2, T2
CMPF?WL T2, L00053
ADD?BCB _s, 001h, _s
CMPNE?TCL _s_2, 001h, L00055
AND?BCB _s, 0F0h, _s
LABEL?L L00055
AIN?BBB _s, _cms, _i
MOVE?CT 001h, _schngd
MOVE?CT 000h, _llb
LABEL?L L00053
CMPNE?TCL _LBtn, 001h, L00057
MOVE?CT 001h, _llb
LABEL?L L00057
CMPEQ?TCB _RBtn, 000h, T1
CMPEQ?TCB _lrb, 001h, T2
LAND?BBW T1, T2, T2
CMPF?WL T2, L00059
ADD?BCB _s, 010h, _s
CMPNE?TCL _s_6, 001h, L00061
AND?BCB _s, 00Fh, _s
LABEL?L L00061
AIN?BBB _s, _cms, _i
MOVE?CT 001h, _schngd
MOVE?CT 000h, _lrb
LABEL?L L00059
CMPNE?TCL _RBtn, 001h, L00063
MOVE?CT 001h, _lrb
LABEL?L L00063
CMPNE?TCL _schngd, 001h, L00065
CMPNE?TCL _ModeVar1, 000h, L00067
SUB?CBW 0FFh, _s, T1
WRITE?BW _i, T1
LABEL?L L00067
CMPNE?TCL _ModeVar1, 001h, L00069
ADD?BCW _i, 010h, T1
SUB?CBW 0FFh, _s, T2
WRITE?WW T1, T2
LABEL?L L00069
LABEL?L L00065
LABEL?L L00033
CMPNE?TCL _ModeVar0, 001h, L00071
CMPNE?TCB _s_0, 000h, T1
CMPNE?TCB _s_1, 000h, T2
LOR?BBW T1, T2, T2
CMPF?WL T2, L00073
MOVE?TT _s_1, _LMotorB
MOVE?TT _s_0, _LMotorF
GOTO?L L00074
LABEL?L L00073
MOVE?TT _lmb, _LMotorB
MOVE?TT _lmf, _LMotorF
LABEL?L L00074
CMPNE?TCB _s_4, 000h, T1
CMPNE?TCB _s_5, 000h, T2
LOR?BBW T1, T2, T2
CMPF?WL T2, L00075
MOVE?TT _s_5, _RMotorB
MOVE?TT _s_4, _RMotorF
GOTO?L L00076
LABEL?L L00075
MOVE?TT _rmb, _RMotorB
MOVE?TT _rmf, _RMotorF
LABEL?L L00076
GOTO?L L00072
LABEL?L L00071
MOVE?TT _lmb, _LMotorB
MOVE?TT _lmf, _LMotorF
MOVE?TT _rmb, _RMotorB
MOVE?TT _rmf, _RMotorF
LABEL?L L00072
ADD?BCB _CycleCounter, 001h, _CycleCounter
GOTO?L _main
END?

END
-----------------------------------------------------------
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top