Subversion Repositories svnkaklik

Compare Revisions

Ignore whitespace Rev 319 → Rev 321

/roboti/Robiada/2007/SW/robot/robot.casm
27,351 → 27,288
Function receive() As Byte
 
If ( (rcsta.OERR = 1) ) Then
020E A2AB BTFSS gbl_rcsta,1
0210 D002 BRA label268438550
0216 label268438550
0204 A2AB BTFSS gbl_rcsta,1
0206 D002 BRA label268438550
020C label268438550
 
rcsta.CREN = 0
0212 98AB BCF gbl_rcsta,4
0208 98AB BCF gbl_rcsta,4
 
rcsta.CREN = 1
0214 88AB BSF gbl_rcsta,4
020A 88AB BSF gbl_rcsta,4
 
End If
Do While (pir1.RCIF = 0)
0216 AA9E BTFSS gbl_pir1,5
0218 D7FE BRA label268438550
020C AA9E BTFSS gbl_pir1,5
020E D7FE BRA label268438550
 
Loop
receive = rcreg
021A 50AE MOVF gbl_rcreg, W
021C 6E0A MOVWF CompTempVarRet489
0210 50AE MOVF gbl_rcreg, W
0212 6E07 MOVWF CompTempVarRet489
 
End Function
021E 0012 RETURN
0214 0012 RETURN
 
 
Sub send(c As Byte)
 
Do while (pir1 & (1 << TXIF)) = 0 Loop
0204 label268438561
0204 A89E BTFSS gbl_pir1,4
0206 D7FE BRA label268438561
0216 label268438561
0216 A89E BTFSS gbl_pir1,4
0218 D7FE BRA label268438561
 
txreg = c
0208 500A MOVF send_00000_arg_c, W
020A 6EAD MOVWF gbl_txreg
021A 5004 MOVF send_00000_arg_c, W
021C 6EAD MOVWF gbl_txreg
 
End Sub
020C 0012 RETURN
021E 0012 RETURN
 
 
Sub delay(cas As Byte)
 
Dim i As Byte
Dim x As Byte
Do while i <= cas
0220 label268438570
0220 5005 MOVF delay_00000_1_i, W
0222 5C04 SUBWF delay_00000_arg_cas, W
0224 A0D8 BTFSS STATUS,C
 
Do While x <= 100
0228 5006 MOVF delay_00000_1_x, W
022A 0864 SUBLW 0x64
022C E305 BNC label268438574
 
Call receive()
022E EC02F001 CALL receive_00000
 
x=x+1
0232 2806 INCF delay_00000_1_x, W
0234 6E06 MOVWF delay_00000_1_x
 
loop
0236 D7F8 BRA label4026532417
0238 label268438574
 
i=i+1
0238 2805 INCF delay_00000_1_i, W
023A 6E05 MOVWF delay_00000_1_i
 
loop
023C D7F1 BRA label268438570
 
End Sub
0226 0012 RETURN
0228 label4026532417
 
 
Sub main()
 
Dim motors As Byte
Dim sensors As Byte
Dim leds As Byte
Dim leds1 As Byte
Dim buttons As Byte
Dim i As Long
 
'NASTAVENI IO
lata=0xFF
0220 6889 SETF gbl_lata
023E 6889 SETF gbl_lata
 
latb=0
0222 6A8A CLRF gbl_latb
0240 6A8A CLRF gbl_latb
 
latc=0xFF
0224 688B SETF gbl_latc
0242 688B SETF gbl_latc
 
trisa=0xF0
0226 0EF0 MOVLW 0xF0
0228 6E92 MOVWF gbl_trisa
0244 0EF0 MOVLW 0xF0
0246 6E92 MOVWF gbl_trisa
 
trisb=0x3F
022A 0E3F MOVLW 0x3F
022C 6E93 MOVWF gbl_trisb
0248 0E3F MOVLW 0x3F
024A 6E93 MOVWF gbl_trisb
 
trisc=0x9F
022E 0E9F MOVLW 0x9F
0230 6E94 MOVWF gbl_trisc
024C 0E9F MOVLW 0x9F
024E 6E94 MOVWF gbl_trisc
 
 
'VYPNOUT ADC
adcon1=0xC6
0232 0EC6 MOVLW 0xC6
0234 6EC1 MOVWF gbl_adcon1
0250 0EC6 MOVLW 0xC6
0252 6EC1 MOVWF gbl_adcon1
 
adcon0=0xC0
0236 0EC0 MOVLW 0xC0
0238 6EC2 MOVWF gbl_adcon0
0254 0EC0 MOVLW 0xC0
0256 6EC2 MOVWF gbl_adcon0
 
 
'UART 9600bps
spbrg=64
023A 0E40 MOVLW 0x40
023C 6EAF MOVWF gbl_spbrg
0258 0E40 MOVLW 0x40
025A 6EAF MOVWF gbl_spbrg
 
txsta = txsta & ~(1 << BRGH)
023E 0EFB MOVLW 0xFB
0240 14AC ANDWF gbl_txsta, W
0242 6EAC MOVWF gbl_txsta
025C 0EFB MOVLW 0xFB
025E 14AC ANDWF gbl_txsta, W
0260 6EAC MOVWF gbl_txsta
 
txsta = txsta | (1 << TXEN)
0244 0E20 MOVLW 0x20
0246 10AC IORWF gbl_txsta, W
0248 6EAC MOVWF gbl_txsta
0262 0E20 MOVLW 0x20
0264 10AC IORWF gbl_txsta, W
0266 6EAC MOVWF gbl_txsta
 
rcsta = rcsta | (1 << CREN)
024A 0E10 MOVLW 0x10
024C 10AB IORWF gbl_rcsta, W
024E 6EAB MOVWF gbl_rcsta
0268 0E10 MOVLW 0x10
026A 10AB IORWF gbl_rcsta, W
026C 6EAB MOVWF gbl_rcsta
 
rcsta = rcsta | (1 << SPEN)
0250 0E80 MOVLW 0x80
0252 10AB IORWF gbl_rcsta, W
0254 6EAB MOVWF gbl_rcsta
026E 0E80 MOVLW 0x80
0270 10AB IORWF gbl_rcsta, W
0272 6EAB MOVWF gbl_rcsta
 
motors = 0x00
0274 6A01 CLRF main_1_motors
 
leds = 0xFF
0256 6803 SETF main_1_leds
lata = 0x0E
0276 0E0E MOVLW 0x0E
0278 6E89 MOVWF gbl_lata
 
leds1 = 0x0F
0258 0E0F MOVLW 0x0F
025A 6E04 MOVWF main_1_leds1
Call delay(200)
027A 0EC8 MOVLW 0xC8
027C 6E04 MOVWF delay_00000_arg_cas
027E EC10F001 CALL delay_00000
 
lata = 0x0D
0282 0E0D MOVLW 0x0D
0284 6E89 MOVWF gbl_lata
 
motors = 0x00
025C 6A01 CLRF main_1_motors
Call delay(200)
0286 0EC8 MOVLW 0xC8
0288 6E04 MOVWF delay_00000_arg_cas
028A EC10F001 CALL delay_00000
 
Do while 1
025E label268438595
lata = 0x0B
028E 0E0B MOVLW 0x0B
0290 6E89 MOVWF gbl_lata
 
buttons = portb
025E 5081 MOVF gbl_portb, W
0260 6E05 MOVWF main_1_buttons
Call delay(200)
0292 0EC8 MOVLW 0xC8
0294 6E04 MOVWF delay_00000_arg_cas
0296 EC10F001 CALL delay_00000
 
If (buttons.1)=0 Then
0262 B205 BTFSC main_1_buttons,1
0264 D022 BRA label268438598
02AA label268438598
lata = 0x07
029A 0E07 MOVLW 0x07
029C 6E89 MOVWF gbl_lata
 
i=0
0266 6A06 CLRF main_1_i
0268 6A07 CLRF main_1_i+D'1'
026A 6A08 CLRF main_1_i+D'2'
026C 6A09 CLRF main_1_i+D'3'
Call delay(200)
029E 0EC8 MOVLW 0xC8
02A0 6E04 MOVWF delay_00000_arg_cas
02A2 EC10F001 CALL delay_00000
 
leds1 = leds1 - 1
026E 0404 DECF main_1_leds1, W
0270 6E04 MOVWF main_1_leds1
 
lata = leds1
0272 5004 MOVF main_1_leds1, W
0274 6E89 MOVWF gbl_lata
motors = 0x77
02A6 0E77 MOVLW 0x77
02A8 6E01 MOVWF main_1_motors
 
Do while i <= 500000
0276 label268438603
0276 5009 MOVF main_1_i+D'3', W
0278 0800 SUBLW 0x00
027A E108 BNZ label268438604
027C 5008 MOVF main_1_i+D'2', W
027E 0807 SUBLW 0x07
0280 E105 BNZ label268438604
0282 5007 MOVF main_1_i+D'1', W
0284 08A1 SUBLW 0xA1
0286 E102 BNZ label268438604
0288 5006 MOVF main_1_i, W
028A 0820 SUBLW 0x20
028C label268438604
028C E202 BC label4026532463
028E AE09 BTFSS main_1_i+D'3',7
0290 D008 BRA label268438608
0292 label4026532463
 
i=i+1
0292 2A06 INCF main_1_i, F
0294 B4D8 BTFSC STATUS,Z
0296 2A07 INCF main_1_i+D'1', F
0298 B4D8 BTFSC STATUS,Z
029A 2A08 INCF main_1_i+D'2', F
029C B4D8 BTFSC STATUS,Z
029E 2A09 INCF main_1_i+D'3', F
Call delay(100)
02AA 0E64 MOVLW 0x64
02AC 6E04 MOVWF delay_00000_arg_cas
02AE EC10F001 CALL delay_00000
 
loop
02A0 D7EA BRA label268438603
02A2 label268438608
 
motors = motors + 0x11
02A2 0E11 MOVLW 0x11
02A4 2401 ADDWF main_1_motors, W
02A6 6E01 MOVWF main_1_motors
 
elseif (buttons.4)=0 Then
02A8 D023 BRA label268438619
02AA B805 BTFSC main_1_buttons,4
02AC D021 BRA label268438619
02F0 label268438619
Do while 1
02B2 label268438640
 
i=0
02AE 6A06 CLRF main_1_i
02B0 6A07 CLRF main_1_i+D'1'
02B2 6A08 CLRF main_1_i+D'2'
02B4 6A09 CLRF main_1_i+D'3'
 
leds1 = leds1 + 1
02B6 2804 INCF main_1_leds1, W
02B8 6E04 MOVWF main_1_leds1
sensors =0xFF
02B2 6802 SETF main_1_sensors
 
lata = leds1
02BA 5004 MOVF main_1_leds1, W
02BC 6E89 MOVWF gbl_lata
sensors = Call receive() 'prijmi stav cidel senzoru
02B4 EC02F001 CALL receive_00000
02B8 5007 MOVF CompTempVarRet489, W
02BA 6E02 MOVWF main_1_sensors
 
Do while i <= 500000
02BE label268438624
02BE 5009 MOVF main_1_i+D'3', W
02C0 0800 SUBLW 0x00
02C2 E108 BNZ label268438625
02C4 5008 MOVF main_1_i+D'2', W
02C6 0807 SUBLW 0x07
02C8 E105 BNZ label268438625
02CA 5007 MOVF main_1_i+D'1', W
02CC 08A1 SUBLW 0xA1
02CE E102 BNZ label268438625
02D0 5006 MOVF main_1_i, W
02D2 0820 SUBLW 0x20
02D4 label268438625
02D4 E202 BC label4026532468
02D6 AE09 BTFSS main_1_i+D'3',7
02D8 D008 BRA label268438629
02DA label4026532468
 
i=i+1
02DA 2A06 INCF main_1_i, F
02DC B4D8 BTFSC STATUS,Z
02DE 2A07 INCF main_1_i+D'1', F
02E0 B4D8 BTFSC STATUS,Z
02E2 2A08 INCF main_1_i+D'2', F
02E4 B4D8 BTFSC STATUS,Z
02E6 2A09 INCF main_1_i+D'3', F
 
loop
02E8 D7EA BRA label268438624
02EA label268438629
 
motors = motors - 0x11
02EA 0E11 MOVLW 0x11
02EC 5C01 SUBWF main_1_motors, W
02EE 6E01 MOVWF main_1_motors
 
End If
leds = 0xFF
02F0 6803 SETF main_1_leds
If (!((sensors.0) and (sensors.1))) Then
02BC 6A03 CLRF CompTempVar491
02BE A202 BTFSS main_1_sensors,1
02C0 D003 BRA label268438645
02C2 A002 BTFSS main_1_sensors,0
02C4 D001 BRA label268438645
02C6 2A03 INCF CompTempVar491, F
02C8 label268438645
02C8 5203 MOVF CompTempVar491, F
02CA E102 BNZ label268438646
02D0 label268438646
 
sensors =0xFF
02F2 6802 SETF main_1_sensors
motors = 0x77
02CC 0E77 MOVLW 0x77
02CE 6E01 MOVWF main_1_motors
 
sensors = Call receive() 'prijmi stav cidel senzoru
02F4 EC07F001 CALL receive_00000
02F8 500A MOVF CompTempVarRet489, W
02FA 6E02 MOVWF main_1_sensors
End If
If (!(sensors.2)) Then
02D0 B402 BTFSC main_1_sensors,2
02D2 D002 BRA label268438649
02D8 label268438649
 
'Bity v bajtu sensors
'BIT3=LEVE SPODNI, BIT2=PRAVE SPODNI, BIT1=LEVE PREDNI, BIT0=PRAVE PREDNI
'prislusny bit v nule znamena aktivni senzor
If (sensors.0)=0 Then
02FC B002 BTFSC main_1_sensors,0
02FE D003 BRA label268438643
0306 label268438643
motors = 0xF7
02D4 0EF7 MOVLW 0xF7
02D6 6E01 MOVWF main_1_motors
 
'pravy predni senzor aktivni
'rozsvit prislusnou LED k senzoru, zatim jen v promenne
leds = leds & ~(1 << 1) 'led sviti, kdyz se ji bit znuluje
0300 0EFD MOVLW 0xFD
0302 1403 ANDWF main_1_leds, W
0304 6E03 MOVWF main_1_leds
 
End If
End If
If (sensors.1)=0 Then
0306 B202 BTFSC main_1_sensors,1
0308 D003 BRA label268438646
0310 label268438646
If (!(sensors.3)) Then
02D8 B602 BTFSC main_1_sensors,3
02DA D002 BRA label268438652
02E0 label268438652
 
'levy predni senzor aktivni
'rozsvit prislusnou LED k senzoru, zatim jen v promenne
leds = leds & ~(1 << 2) 'led sviti, kdyz se ji bit znuluje
030A 0EFB MOVLW 0xFB
030C 1403 ANDWF main_1_leds, W
030E 6E03 MOVWF main_1_leds
motors = 0x7F
02DC 0E7F MOVLW 0x7F
02DE 6E01 MOVWF main_1_motors
 
End If
End If
lata = sensors
02E0 5002 MOVF main_1_sensors, W
02E2 6E89 MOVWF gbl_lata
 
If (sensors.2)=0 Then
0310 B402 BTFSC main_1_sensors,2
0312 D003 BRA label268438649
031A label268438649
call send(motors)
02E4 5001 MOVF main_1_motors, W
02E6 6E04 MOVWF send_00000_arg_c
02E8 EC0BF001 CALL send_00000
 
'pravy spodni senzor aktivni
'rozsvit prislusnou LED k senzoru, zatim jen v promenne
leds = leds & ~(1 << 0) 'led sviti, kdyz se ji bit znuluje
0314 0EFE MOVLW 0xFE
0316 1403 ANDWF main_1_leds, W
0318 6E03 MOVWF main_1_leds
 
End If
If (sensors.3)=0 Then
031A B602 BTFSC main_1_sensors,3
031C D003 BRA label268438652
0324 label268438652
Loop
02EC D7E2 BRA label268438640
 
'levy spodni senzor aktivni
'rozsvit prislusnou LED k senzoru, zatim jen v promenne
leds = leds & ~(1 << 3) 'led sviti, kdyz se ji bit znuluje
031E 0EF7 MOVLW 0xF7
0320 1403 ANDWF main_1_leds, W
0322 6E03 MOVWF main_1_leds
End Sub
 
End If
lata = leds
0324 5003 MOVF main_1_leds, W
0326 6E89 MOVWF gbl_lata
 
call send(motors)
0328 5001 MOVF main_1_motors, W
032A 6E0A MOVWF send_00000_arg_c
032C EC02F001 CALL send_00000
////////////////////////////////////////
// Code with no source :-)
////////////////////////////////////////
0200 EF77F001 GOTO _startup
 
 
Loop
0330 D796 BRA label268438595
 
 
End Sub
 
 
////////////////////////////////////////
// Code with no source :-)
////////////////////////////////////////
0200 EF99F001 GOTO _startup
 
02EE _startup
02EE EF1FF001 GOTO main
 
0332 _startup
0332 EF10F001 GOTO main
 
300000 FEFF DW 0xFEFF
300002 FEF6 DW 0xFEF6
300004 FEFF DW 0xFEFF