URL
https://opencores.org/ocsvn/mcip_open/mcip_open/trunk
Subversion Repositories mcip_open
Compare Revisions
- This comparison shows the changes necessary to convert path
/mcip_open
- from Rev 1 to Rev 2
- ↔ Reverse comparison
Rev 1 → Rev 2
/trunk/MCIP_imp_Spartan3E_StarteKit.bit
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
trunk/MCIP_imp_Spartan3E_StarteKit.bit
Property changes :
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/Hi_MCIPopen.ASM
===================================================================
--- trunk/Hi_MCIPopen.ASM (nonexistent)
+++ trunk/Hi_MCIPopen.ASM (revision 2)
@@ -0,0 +1,537 @@
+;******************************************************************************
+; *
+; Filename: Hi_MCIPopen.asm *
+; Description: ASM program for MCIPopen implementation example *
+; Date: 07/25/2015 *
+; File Version: 1 *
+; Tool: MPLAB IDE v8.83 *
+; *
+; Author: Ibrahim MEZZAH *
+; Company: Ferhat Abbas University - Algeria *
+; *
+;******************************************************************************
+; *
+; Files Required: P18F4410.INC *
+; *
+;******************************************************************************
+
+ LIST P=18F4410 ;directive to define processor
+ #include ;processor specific variable definitions
+
+
+
+; Oscillator Selection:
+ CONFIG OSC = LP ;LP
+
+
+
+; LCD defines /////////////////////////////////////////
+#define LCD_DATA_PRT 0xF8B ;/*PRTC*/
+#define LCD_DATA_PORT 0x8B
+#define LCD_TRIS_DATA_PORT 0x94
+#define LCD_INST_PORT 0x8C ;/*PRTD*/
+#define LCD_TRIS_INST_PORT 0x95
+
+#define RW_PIN 5 ;/* PORT for RW */
+#define RS_PIN 6 ;/* PORT for RS */
+#define E_PIN 7 ;/* PORT for E */
+
+#define FOUR_BIT 0x28 ;0b00101000
+#define CLEAR 0x01 ;0b00000001
+#define CURSOR_HOME 0x02 ;0b00000010
+#define MODE_SET 0x06 ;0b00000110
+#define DISPLAY_ON_C 0x0e ;0b00001110
+#define DISPLAY_ON_B 0x0f ;0b00001111
+#define DISPLAY_ON 0x0c ;0b00001100
+#define DISPLAY_OFF 0x08 ;0b00001000
+#define SHIFT_D_R 0x1c ;0b00011100
+#define SHIFT_D_L 0x18 ;0b00011000
+#define SHIFT_C_R 0x14 ;0b00010100
+#define SHIFT_C_L 0x10 ;0b00010000
+
+#define access 0
+
+ CBLOCK 0x080
+ WREG_TEMP1 ;variable used for context saving
+ STATUS_TEMP1 ;variable used for context saving
+ BSR_TEMP1 ;variable used for context saving
+
+ WREG_TEMP2 ;variable used for context saving
+ STATUS_TEMP2 ;variable used for context saving
+ BSR_TEMP2 ;variable used for context saving
+
+ WREG_TEMP3 ;variable used for context saving
+ STATUS_TEMP3 ;variable used for context saving
+ BSR_TEMP3 ;variable used for context saving
+
+ WREG_TEMP4 ;variable used for context saving
+ STATUS_TEMP4 ;variable used for context saving
+ BSR_TEMP4 ;variable used for context saving
+ ENDC
+
+ CBLOCK 0x009 ;variables in access RAM
+ e1
+ e2
+ e3
+ e4
+ LCD_command
+ LCD_data
+ ENDC
+
+
+;******************************************************************************
+;Reset vector
+; This code will start executing when a reset occurs.
+
+ ORG 0x0000
+
+ goto Main ;go to start of main code
+
+
+
+Main:
+
+ ;------------------------------------------------------------------------------
+ ; I/O ports configuration
+ ;------------------------------------------------------------------------------
+
+ MOVLW 0x0f
+ MOVWF LCD_TRIS_DATA_PORT,0
+ CLRF LCD_INST_PORT,0
+ MOVLW 0x1f
+ MOVWF LCD_TRIS_INST_PORT,0
+
+ MOVLW 0x0f
+ CLRF LATA
+ MOVWF TRISA
+ CLRF TRISB
+ ;------------------------------------------------------------------------------
+ ; LCD Initialisation
+ ;------------------------------------------------------------------------------
+
+
+ MOVLW 0x30
+ MOVWF LCD_DATA_PORT,0
+ BSF LCD_INST_PORT,E_PIN,0
+ NOP
+ NOP
+ BCF LCD_INST_PORT,E_PIN,0
+
+ CALL Delay1_6ms
+ CALL Delay1_6ms
+
+ BSF LCD_INST_PORT,E_PIN,0
+ NOP
+ NOP
+ BCF LCD_INST_PORT,E_PIN,0
+
+ CALL Delay42us
+ CALL Delay42us
+
+ BSF LCD_INST_PORT,E_PIN,0
+ NOP
+ NOP
+ BCF LCD_INST_PORT,E_PIN,0
+
+ CALL Delay42us
+ CALL Delay42us
+
+ MOVLW 0x20
+ MOVWF LCD_DATA_PORT,0
+ BSF LCD_INST_PORT,E_PIN,0
+ NOP
+ NOP
+ BCF LCD_INST_PORT,E_PIN,0
+
+ CALL Delay42us
+ CALL Delay42us
+
+ MOVLW FOUR_BIT
+ MOVWF LCD_command,access
+ CALL Command
+
+ CALL Delay42us
+ CALL Delay42us
+
+ MOVLW DISPLAY_OFF
+ MOVWF LCD_command,access
+ CALL Command
+
+ CALL Delay42us
+ CALL Delay42us
+
+ MOVLW DISPLAY_ON
+ MOVWF LCD_command,access
+ CALL Command
+
+ CALL Delay42us
+ CALL Delay42us
+
+ MOVLW MODE_SET
+ MOVWF LCD_command,access
+ CALL Command
+
+ CALL Delay42us
+ CALL Delay42us
+
+ MOVLW CLEAR
+ MOVWF LCD_command,access
+ CALL Command
+
+ CALL Delay1_6ms
+ CALL Delay1_6ms
+
+ ;------------------------------------------------------------------------------
+ ; END LCD Initialisation
+ ;------------------------------------------------------------------------------
+
+ ; Displaying "Hello MCIP!"
+ MOVLW 0x03
+ MOVWF LCD_data,access
+ CALL Set_address
+ CALL Delay42us
+
+ MOVLW 'H'
+ MOVWF LCD_data,access
+ CALL Display
+ CALL Delay42us
+
+ MOVLW 'e'
+ MOVWF LCD_data,access
+ CALL Display
+ CALL Delay42us
+
+ MOVLW 'l'
+ MOVWF LCD_data,access
+ CALL Display
+ CALL Delay42us
+
+ MOVLW 'l'
+ MOVWF LCD_data,access
+ CALL Display
+ CALL Delay42us
+
+ MOVLW 'o'
+ MOVWF LCD_data,access
+ CALL Display
+ CALL Delay42us
+
+ MOVLW ' '
+ MOVWF LCD_data,access
+ CALL Display
+ CALL Delay42us
+
+ MOVLW 'M'
+ MOVWF LCD_data,access
+ CALL Display
+ CALL Delay42us
+
+ MOVLW 'C'
+ MOVWF LCD_data,access
+ CALL Display
+ CALL Delay42us
+
+ MOVLW 'I'
+ MOVWF LCD_data,access
+ CALL Display
+ CALL Delay42us
+
+ MOVLW 'P'
+ MOVWF LCD_data,access
+ CALL Display
+ CALL Delay42us
+
+ MOVLW '!'
+ MOVWF LCD_data,access
+ CALL Display
+ CALL Delay42us
+
+
+ ;--------------------
+ MOVLW 0x53
+ MOVWF LCD_data,access
+ CALL Set_address
+ CALL Delay42us
+
+ MOVLW '<'
+ MOVWF LCD_data,access
+ CALL Display
+ CALL Delay42us
+
+ MOVLW '<'
+ MOVWF LCD_data,access
+ CALL Display
+ CALL Delay42us
+
+ MOVLW 0x63
+ MOVWF LCD_data,access
+ CALL Set_address
+ CALL Delay42us
+
+ MOVLW '<'
+ MOVWF LCD_data,access
+ CALL Display
+ CALL Delay42us
+
+ MOVLW '<'
+ MOVWF LCD_data,access
+ CALL Display
+ CALL Delay42us
+
+
+ ;----------------------
+ ; ~ 2second delay
+ MOVLW 0x22
+ MOVWF e4,access
+
+loop21:
+ CALL Delay58ms
+ DECFSZ e4,1,access
+ BRA loop21
+
+ MOVLW 0x80
+ MOVWF LATB
+
+looplooop:
+ RLNCF LATB,1,0
+
+ MOVLW SHIFT_D_L
+ MOVWF LCD_command,access
+ CALL Command
+
+ MOVLW 0x0f
+ ANDWF PORTA,0,0
+
+ MOVWF e4,0
+
+ INCF e4,1,0
+
+loop_3x58ms:
+ CALL Delay58ms
+ ;CALL Delay58ms
+
+ DECF e4,1,0
+ TSTFSZ e4,0
+ BRA loop_3x58ms
+ BRA looplooop
+
+
+; Fuctions:
+
+;---------------------------------
+; Delay 42us *********************
+Delay42us:
+
+ ;save working registers
+ movff STATUS,STATUS_TEMP1
+ movff WREG,WREG_TEMP1
+ movff BSR,BSR_TEMP1
+
+ MOVLW 0xAC
+ MOVWF e1,access
+
+loop10:
+ INCFSZ e1,1,access
+ BRA loop10
+
+ ;restore working registers
+ movff BSR_TEMP1,BSR
+ movff WREG_TEMP1,WREG
+ movff STATUS_TEMP1,STATUS
+
+ RETURN
+;******** end Delay 40us **********
+;----------------------------------
+
+
+;---------------------------------
+; Delay 1.6ms ********************
+Delay1_6ms:
+
+ ;save working registers
+ movff STATUS,STATUS_TEMP2
+ movff WREG,WREG_TEMP2
+ movff BSR,BSR_TEMP2
+
+ MOVLW 0x25
+ MOVWF e2,access
+
+loop3:
+ CALL Delay42us
+ DECFSZ e2,1,access
+ BRA loop3
+
+ ;restore working registers
+ movff BSR_TEMP2,BSR
+ movff WREG_TEMP2,WREG
+ movff STATUS_TEMP2,STATUS
+
+ RETURN
+;******** end Delay1.6ms **********
+;----------------------------------
+
+
+;---------------------------------
+; Delay 58ms *********************
+Delay58ms:
+
+ ;save working registers
+ movff STATUS,STATUS_TEMP3
+ movff WREG,WREG_TEMP3
+ movff BSR,BSR_TEMP3
+
+ MOVLW 0x24
+ MOVWF e3,access
+
+loop4:
+ CALL Delay1_6ms
+ DECFSZ e3,1,access
+ BRA loop4
+
+ ;restore working registers
+ movff BSR_TEMP3,BSR
+ movff WREG_TEMP3,WREG
+ movff STATUS_TEMP3,STATUS
+
+ RETURN
+;******** end Delay 58ms **********
+;----------------------------------
+
+
+;----------------------------------
+; send a command to the LCD *******
+Command:
+
+ ;save working registers
+ movff STATUS,STATUS_TEMP4
+ movff WREG,WREG_TEMP4
+ movff BSR,BSR_TEMP4
+
+MOVFF LCD_command,LCD_DATA_PRT
+BSF LCD_INST_PORT,E_PIN,0
+NOP
+NOP
+NOP
+BCF LCD_INST_PORT,E_PIN,0
+SWAPF LCD_DATA_PORT,1,0
+NOP
+NOP
+NOP
+NOP
+NOP
+NOP
+NOP
+NOP
+NOP
+NOP
+NOP
+BSF LCD_INST_PORT,E_PIN,0
+NOP
+NOP
+NOP
+BCF LCD_INST_PORT,E_PIN,0
+
+ ;restore working registers
+ movff BSR_TEMP4,BSR
+ movff WREG_TEMP4,WREG
+ movff STATUS_TEMP4,STATUS
+
+RETURN
+;****** end send command **********
+;----------------------------------
+
+
+;----------------------------------
+; send data to the LCD ************
+Display:
+
+ ;save working registers
+ movff STATUS,STATUS_TEMP4
+ movff WREG,WREG_TEMP4
+ movff BSR,BSR_TEMP4
+
+MOVFF LCD_data,LCD_DATA_PRT
+BSF LCD_INST_PORT,RS_PIN,0
+BSF LCD_INST_PORT,E_PIN,0
+NOP
+NOP
+NOP
+BCF LCD_INST_PORT,E_PIN,0
+SWAPF LCD_DATA_PORT,1,0
+NOP
+NOP
+NOP
+NOP
+NOP
+NOP
+NOP
+NOP
+NOP
+NOP
+NOP
+BSF LCD_INST_PORT,E_PIN,0
+NOP
+NOP
+NOP
+BCF LCD_INST_PORT,E_PIN,0
+BCF LCD_INST_PORT,RS_PIN,0
+
+ ;restore working registers
+ movff BSR_TEMP4,BSR
+ movff WREG_TEMP4,WREG
+ movff STATUS_TEMP4,STATUS
+
+RETURN
+;******** end send data ***********
+;----------------------------------
+
+;----------------------------------
+; Set an address to the LCD *******
+Set_address:
+
+ ;save working registers
+ movff STATUS,STATUS_TEMP4
+ movff WREG,WREG_TEMP4
+ movff BSR,BSR_TEMP4
+
+MOVLW 0x80
+IORWF LCD_data,1,access
+
+MOVFF LCD_data,LCD_DATA_PRT
+BSF LCD_INST_PORT,E_PIN,0
+NOP
+NOP
+NOP
+BCF LCD_INST_PORT,E_PIN,0
+SWAPF LCD_DATA_PORT,1,0
+NOP
+NOP
+NOP
+NOP
+NOP
+NOP
+NOP
+NOP
+NOP
+NOP
+NOP
+BSF LCD_INST_PORT,E_PIN,0
+NOP
+NOP
+NOP
+BCF LCD_INST_PORT,E_PIN,0
+
+ ;restore working registers
+ movff BSR_TEMP4,BSR
+ movff WREG_TEMP4,WREG
+ movff STATUS_TEMP4,STATUS
+
+RETURN
+;******** end set address *********
+;----------------------------------
+
+
+;******************************************************************************
+;End of program
+
+ END
Index: trunk/MCIPopen.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: trunk/MCIPopen.jpg
===================================================================
--- trunk/MCIPopen.jpg (nonexistent)
+++ trunk/MCIPopen.jpg (revision 2)
trunk/MCIPopen.jpg
Property changes :
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: trunk/MCIPopen_imp.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: trunk/MCIPopen_imp.jpg
===================================================================
--- trunk/MCIPopen_imp.jpg (nonexistent)
+++ trunk/MCIPopen_imp.jpg (revision 2)
trunk/MCIPopen_imp.jpg
Property changes :
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property