OpenCores
URL https://opencores.org/ocsvn/mcip_open/mcip_open/trunk

Subversion Repositories mcip_open

[/] [mcip_open/] [trunk/] [MCIPopen_XilinxISEproject/] [Program_Memory.vhd] - Rev 4

Compare with Previous | Blame | View Log

--------------------------------------------------------------------------------
-- Company:        Ferhat Abbas University - Algeria
-- Engineer:       Ibrahim MEZZAH
-- Progect Supervisor: Dr H. Chemali
-- Create Date:    07:59:40 05/24/05
-- Design Name:    Program memory
-- Module Name:    Program_Memory - ROM
-- Project Name:   MCIP open
-- Target Device:  xc3s500e-4fg320
-- Tool versions:  Xilinx ISE 9.1.03i
-- Description:	 Contains the MCIP program. The instruction is encoded on 2 bytes.
--						 The size is generic (Rom_size), the max is 2MB.
-- Revision:		 07/07/2008
-- Revision 1 - Add description
-- Additional Comments: 
--------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.NUMERIC_STD.all;
 
 
entity Program_Memory is
	 Generic (IAlength 		: integer := 14);  -- Instruction Address Length -- min = 2, max = 21
    Port ( Address : in std_logic_vector(IALength-1 downto 0);
           nreset  : in std_logic;
           Q1      : in std_logic;
           Instruction : out std_logic_vector(15 downto 0));
end Program_Memory;
 
architecture ROM of Program_Memory is
 
	constant Rom_size : integer := 2**(IALength);
 
	type Rom_Table is array(0 to (Rom_size-1)) of std_logic_vector(7 downto 0);
 
 
 
	constant ROM : Rom_Table :=
 
(
X"02",X"EF",X"00",X"F0",X"0F",X"0E",X"94",X"6E",X"8C",X"6A",X"1F",X"0E",X"95",X"6E",X"0F",X"0E",
X"89",X"6A",X"92",X"6E",X"93",X"6A",X"30",X"0E",X"8B",X"6E",X"8C",X"8E",X"00",X"00",X"00",X"00",
X"8C",X"9E",X"EB",X"EC",X"00",X"F0",X"EB",X"EC",X"00",X"F0",X"8C",X"8E",X"00",X"00",X"00",X"00",
X"8C",X"9E",X"DA",X"EC",X"00",X"F0",X"DA",X"EC",X"00",X"F0",X"8C",X"8E",X"00",X"00",X"00",X"00",
X"8C",X"9E",X"DA",X"EC",X"00",X"F0",X"DA",X"EC",X"00",X"F0",X"20",X"0E",X"8B",X"6E",X"8C",X"8E",
X"00",X"00",X"00",X"00",X"8C",X"9E",X"DA",X"EC",X"00",X"F0",X"DA",X"EC",X"00",X"F0",X"28",X"0E",
X"0D",X"6E",X"11",X"EC",X"01",X"F0",X"DA",X"EC",X"00",X"F0",X"DA",X"EC",X"00",X"F0",X"08",X"0E",
X"0D",X"6E",X"11",X"EC",X"01",X"F0",X"DA",X"EC",X"00",X"F0",X"DA",X"EC",X"00",X"F0",X"0C",X"0E",
X"0D",X"6E",X"11",X"EC",X"01",X"F0",X"DA",X"EC",X"00",X"F0",X"DA",X"EC",X"00",X"F0",X"06",X"0E",
X"0D",X"6E",X"11",X"EC",X"01",X"F0",X"DA",X"EC",X"00",X"F0",X"DA",X"EC",X"00",X"F0",X"01",X"0E",
X"0D",X"6E",X"11",X"EC",X"01",X"F0",X"EB",X"EC",X"00",X"F0",X"EB",X"EC",X"00",X"F0",X"03",X"0E",
X"0E",X"6E",X"5D",X"EC",X"01",X"F0",X"DA",X"EC",X"00",X"F0",X"48",X"0E",X"0E",X"6E",X"36",X"EC",
X"01",X"F0",X"DA",X"EC",X"00",X"F0",X"65",X"0E",X"0E",X"6E",X"36",X"EC",X"01",X"F0",X"DA",X"EC",
X"00",X"F0",X"6C",X"0E",X"0E",X"6E",X"36",X"EC",X"01",X"F0",X"DA",X"EC",X"00",X"F0",X"6C",X"0E",
X"0E",X"6E",X"36",X"EC",X"01",X"F0",X"DA",X"EC",X"00",X"F0",X"6F",X"0E",X"0E",X"6E",X"36",X"EC",
X"01",X"F0",X"DA",X"EC",X"00",X"F0",X"20",X"0E",X"0E",X"6E",X"36",X"EC",X"01",X"F0",X"DA",X"EC",
X"00",X"F0",X"4D",X"0E",X"0E",X"6E",X"36",X"EC",X"01",X"F0",X"DA",X"EC",X"00",X"F0",X"43",X"0E",
X"0E",X"6E",X"36",X"EC",X"01",X"F0",X"DA",X"EC",X"00",X"F0",X"49",X"0E",X"0E",X"6E",X"36",X"EC",
X"01",X"F0",X"DA",X"EC",X"00",X"F0",X"50",X"0E",X"0E",X"6E",X"36",X"EC",X"01",X"F0",X"DA",X"EC",
X"00",X"F0",X"21",X"0E",X"0E",X"6E",X"36",X"EC",X"01",X"F0",X"DA",X"EC",X"00",X"F0",X"53",X"0E",
X"0E",X"6E",X"5D",X"EC",X"01",X"F0",X"DA",X"EC",X"00",X"F0",X"3C",X"0E",X"0E",X"6E",X"36",X"EC",
X"01",X"F0",X"DA",X"EC",X"00",X"F0",X"3C",X"0E",X"0E",X"6E",X"36",X"EC",X"01",X"F0",X"DA",X"EC",
X"00",X"F0",X"63",X"0E",X"0E",X"6E",X"5D",X"EC",X"01",X"F0",X"DA",X"EC",X"00",X"F0",X"3C",X"0E",
X"0E",X"6E",X"36",X"EC",X"01",X"F0",X"DA",X"EC",X"00",X"F0",X"3C",X"0E",X"0E",X"6E",X"36",X"EC",
X"01",X"F0",X"DA",X"EC",X"00",X"F0",X"22",X"0E",X"0C",X"6E",X"FE",X"EC",X"00",X"F0",X"0C",X"2E",
X"FC",X"D7",X"80",X"0E",X"8A",X"6E",X"8A",X"46",X"18",X"0E",X"0D",X"6E",X"11",X"EC",X"01",X"F0",
X"0F",X"0E",X"80",X"14",X"0C",X"6E",X"0C",X"2A",X"FE",X"EC",X"00",X"F0",X"0C",X"06",X"0C",X"66",
X"FB",X"D7",X"F1",X"D7",X"D8",X"CF",X"81",X"F0",X"E8",X"CF",X"80",X"F0",X"E0",X"CF",X"82",X"F0",
X"AC",X"0E",X"09",X"6E",X"09",X"3E",X"FE",X"D7",X"82",X"C0",X"E0",X"FF",X"80",X"C0",X"E8",X"FF",
X"81",X"C0",X"D8",X"FF",X"12",X"00",X"D8",X"CF",X"84",X"F0",X"E8",X"CF",X"83",X"F0",X"E0",X"CF",
X"85",X"F0",X"25",X"0E",X"0A",X"6E",X"DA",X"EC",X"00",X"F0",X"0A",X"2E",X"FC",X"D7",X"85",X"C0",
X"E0",X"FF",X"83",X"C0",X"E8",X"FF",X"84",X"C0",X"D8",X"FF",X"12",X"00",X"D8",X"CF",X"87",X"F0",
X"E8",X"CF",X"86",X"F0",X"E0",X"CF",X"88",X"F0",X"24",X"0E",X"0B",X"6E",X"EB",X"EC",X"00",X"F0",
X"0B",X"2E",X"FC",X"D7",X"88",X"C0",X"E0",X"FF",X"86",X"C0",X"E8",X"FF",X"87",X"C0",X"D8",X"FF",
X"12",X"00",X"D8",X"CF",X"8A",X"F0",X"E8",X"CF",X"89",X"F0",X"E0",X"CF",X"8B",X"F0",X"0D",X"C0",
X"8B",X"FF",X"8C",X"8E",X"00",X"00",X"00",X"00",X"00",X"00",X"8C",X"9E",X"8B",X"3A",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"8C",X"8E",X"00",X"00",X"00",X"00",X"00",X"00",X"8C",X"9E",X"8B",X"C0",
X"E0",X"FF",X"89",X"C0",X"E8",X"FF",X"8A",X"C0",X"D8",X"FF",X"12",X"00",X"D8",X"CF",X"8A",X"F0",
X"E8",X"CF",X"89",X"F0",X"E0",X"CF",X"8B",X"F0",X"0E",X"C0",X"8B",X"FF",X"8C",X"8C",X"8C",X"8E",
X"00",X"00",X"00",X"00",X"00",X"00",X"8C",X"9E",X"8B",X"3A",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"8C",X"8E",X"00",X"00",X"00",X"00",X"00",X"00",X"8C",X"9E",X"8C",X"9C",X"8B",X"C0",X"E0",X"FF",
X"89",X"C0",X"E8",X"FF",X"8A",X"C0",X"D8",X"FF",X"12",X"00",X"D8",X"CF",X"8A",X"F0",X"E8",X"CF",
X"89",X"F0",X"E0",X"CF",X"8B",X"F0",X"80",X"0E",X"0E",X"12",X"0E",X"C0",X"8B",X"FF",X"8C",X"8E",
X"00",X"00",X"00",X"00",X"00",X"00",X"8C",X"9E",X"8B",X"3A",X"00",X"00",X"00",X"00",X"00",X"00",
X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",X"00",
X"8C",X"8E",X"00",X"00",X"00",X"00",X"00",X"00",X"8C",X"9E",X"8B",X"C0",X"E0",X"FF",X"89",X"C0",
X"E8",X"FF",X"8A",X"C0",X"D8",X"FF",X"12",X"00",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",X"FF",
others => X"FF" );
 
-- teh original HEX file --------------------
--:1000000002EF00F00F0E946E8C6A1F0E956E0F0EAD
--:10001000896A926E936A300E8B6E8C8E000000009F
--:100020008C9EEBEC00F0EBEC00F08C8E00000000FE
--:100030008C9EDAEC00F0DAEC00F08C8E0000000010
--:100040008C9EDAEC00F0DAEC00F0200E8B6E8C8ED9
--:10005000000000008C9EDAEC00F0DAEC00F0280ED4
--:100060000D6E11EC01F0DAEC00F0DAEC00F0080EA5
--:100070000D6E11EC01F0DAEC00F0DAEC00F00C0E91
--:100080000D6E11EC01F0DAEC00F0DAEC00F0060E87
--:100090000D6E11EC01F0DAEC00F0DAEC00F0010E7C
--:1000A0000D6E11EC01F0EBEC00F0EBEC00F0030E48
--:1000B0000E6E5DEC01F0DAEC00F0480E0E6E36ECE0
--:1000C00001F0DAEC00F0650E0E6E36EC01F0DAECC1
--:1000D00000F06C0E0E6E36EC01F0DAEC00F06C0EF7
--:1000E0000E6E36EC01F0DAEC00F06F0E0E6E36ECB0
--:1000F00001F0DAEC00F0200E0E6E36EC01F0DAECD6
--:1001000000F04D0E0E6E36EC01F0DAEC00F0430E0E
--:100110000E6E36EC01F0DAEC00F0490E0E6E36ECA5
--:1001200001F0DAEC00F0500E0E6E36EC01F0DAEC75
--:1001300000F0210E0E6E36EC01F0DAEC00F0530EFA
--:100140000E6E5DEC01F0DAEC00F03C0E0E6E36EC5B
--:1001500001F0DAEC00F03C0E0E6E36EC01F0DAEC59
--:1001600000F0630E0E6E5DEC01F0DAEC00F03C0E78
--:100170000E6E36EC01F0DAEC00F03C0E0E6E36EC52
--:1001800001F0DAEC00F0220E0C6EFEEC00F00C2E0A
--:10019000FCD7800E8A6E8A46180E0D6E11EC01F0A7
--:1001A0000F0E80140C6E0C2AFEEC00F00C060C6690
--:1001B000FBD7F1D7D8CF81F0E8CF80F0E0CF82F045
--:1001C000AC0E096E093EFED782C0E0FF80C0E8FF9A
--:1001D00081C0D8FF1200D8CF84F0E8CF83F0E0CF01
--:1001E00085F0250E0A6EDAEC00F00A2EFCD785C0E9
--:1001F000E0FF83C0E8FF84C0D8FF1200D8CF87F0AB
--:10020000E8CF86F0E0CF88F0240E0B6EEBEC00F028
--:100210000B2EFCD788C0E0FF86C0E8FF87C0D8FF60
--:100220001200D8CF8AF0E8CF89F0E0CF8BF00DC074
--:100230008BFF8C8E0000000000008C9E8B3A00002B
--:1002400000000000000000000000000000000000AE
--:10025000000000008C8E0000000000008C9E8BC00F
--:10026000E0FF89C0E8FF8AC0D8FF1200D8CF8AF02B
--:10027000E8CF89F0E0CF8BF00EC08BFF8C8C8C8E9A
--:100280000000000000008C9E8B3A0000000000007F
--:10029000000000000000000000000000000000005E
--:1002A0008C8E0000000000008C9E8C9C8BC0E0FFB8
--:1002B00089C0E8FF8AC0D8FF1200D8CF8AF0E8CF03
--:1002C00089F0E0CF8BF0800E0E120EC08BFF8C8E6B
--:1002D0000000000000008C9E8B3A0000000000002F
--:1002E000000000000000000000000000000000000E
--:1002F0008C8E0000000000008C9E8BC0E0FF89C047
--:10030000E8FF8AC0D8FF1200FFFFFFFFFFFFFFFFDB
---end---------------------------------------
 
 
 
begin
	process(nreset, Q1)
		begin
		 if nreset = '0' then
			 Instruction <= (others => '0');
		 else
		  if Q1'event and Q1 = '0' then
			 Instruction <= ROM( CONV_INTEGER( Address(IALength-1 downto 0) + 1 ) ) 
							  & ROM( CONV_INTEGER( Address(IALength-1 downto 0) )  );
		  end if;
		 end if;
		end process;
end ROM;
 
 
--///////////////////////////////////////////////////////////////////////////////
-- THE ORIGINAL PROGRAM, DEVELOPED ON MPLAP IDE v8.83 (ASM CODE)
--;******************************************************************************
--;                                                                             *
--;    Filename:       Hi_MCIPopen.asm                                          *
--;    Description:    ASM program for MCIPopen implementation example          *
--;    Date:           07/25/2015                                               *
--;    File Version:   1                                                        *
--;                                                                             *
--;    Author:         Ibrahim MEZZAH                                           *
--;    Company:        Ferhat Abbas University - Algeria                        *
--;                                                                             * 
--;******************************************************************************
--;                                                                             *
--;    Files Required: P18F4410.INC                                             *
--;                                                                             *
--;******************************************************************************
--
--	LIST P=18F4410	;directive to define processor
--	#include <P18F4410.INC>	;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
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.