⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oc8051_defines.v

📁 8051 IP核VERILOG代码
💻 V
📖 第 1 页 / 共 2 页
字号:
`define OC8051_JB 8'b0010_0000 // jump if bit set`define OC8051_JBC 8'b0001_0000 // jump if bit set and clear bit`define OC8051_JC 8'b0100_0000 // jump if carry is set`define OC8051_JMP 8'b0111_0011 // jump indirect`define OC8051_JNB 8'b0011_0000 // jump if bit not set`define OC8051_JNC 8'b0101_0000 // jump if carry not set`define OC8051_JNZ 8'b0111_0000 // jump if accumulator not zero`define OC8051_JZ 8'b0110_0000 // jump if accumulator zero`define OC8051_LCALL 8'b0001_0010 // long call`define OC8051_LJMP 8'b0000_0010 // long jump`define OC8051_MOV_D 8'b1110_0101 // move A=(direct)`define OC8051_MOV_C 8'b0111_0100 // move A=constant`define OC8051_MOV_DA 8'b1111_0101 // move (direct)=A`define OC8051_MOV_DD 8'b1000_0101 // move (direct)=(direct)`define OC8051_MOV_CD 8'b0111_0101 // move (direct)=constant`define OC8051_MOV_BC 8'b1010_0010 // move c=bit`define OC8051_MOV_CB 8'b1001_0010 // move bit=c`define OC8051_MOV_DP 8'b1001_0000 // move dptr=constant(16 bit)`define OC8051_MOVC_DP 8'b1001_0011 // move A=dptr+A`define OC8051_MOVC_PC 8'b1000_0011 // move A=pc+A`define OC8051_MOVX_PA 8'b1110_0000 // move A=(dptr)`define OC8051_MOVX_AP 8'b1111_0000 // move (dptr)=A`define OC8051_MUL 8'b1010_0100 // multiply a*b`define OC8051_NOP 8'b0000_0000 // no operation`define OC8051_ORL_D 8'b0100_0101 // or A=A or (direct)`define OC8051_ORL_C 8'b0100_0100 // or A=A or constant`define OC8051_ORL_AD 8'b0100_0010 // or (direct)=(direct) or A`define OC8051_ORL_CD 8'b0100_0011 // or (direct)=(direct) or constant`define OC8051_ORL_B 8'b0111_0010 // or c = c or bit`define OC8051_ORL_NB 8'b1010_0000 // or c = c or !bit`define OC8051_POP 8'b1101_0000 // stack pop`define OC8051_PUSH 8'b1100_0000 // stack push`define OC8051_RET 8'b0010_0010 // return from subrutine`define OC8051_RETI 8'b0011_0010 // return from interrupt`define OC8051_RL 8'b0010_0011 // rotate left`define OC8051_RLC 8'b0011_0011 // rotate left thrugh carry`define OC8051_RR 8'b0000_0011 // rotate right`define OC8051_RRC 8'b0001_0011 // rotate right thrugh carry`define OC8051_SETB_C 8'b1101_0011 // set carry`define OC8051_SETB_B 8'b1101_0010 // set bit`define OC8051_SJMP 8'b1000_0000 // short jump`define OC8051_SUBB_D 8'b1001_0101 // substract with borrow  A=A-c-(direct)`define OC8051_SUBB_C 8'b1001_0100 // substract with borrow  A=A-c-constant`define OC8051_SWAP 8'b1100_0100 // swap A(0-3) <-> A(4-7)`define OC8051_XCH_D 8'b1100_0101 // exchange A<->(direct)`define OC8051_XRL_D 8'b0110_0101 // XOR A=A XOR (direct)`define OC8051_XRL_C 8'b0110_0100 // XOR A=A XOR constant`define OC8051_XRL_AD 8'b0110_0010 // XOR (direct)=(direct) XOR A`define OC8051_XRL_CD 8'b0110_0011 // XOR (direct)=(direct) XOR constant//// default values (used after reset)//`define OC8051_RST_PC 16'h0000 // program counter`define OC8051_RST_ACC 8'h00 // accumulator`define OC8051_RST_B 8'h00 // b register`define OC8051_RST_PSW 8'h00 // program status word`define OC8051_RST_SP 8'b0000_0111 // stack pointer`define OC8051_RST_DPH 8'h00 // data pointer (high)`define OC8051_RST_DPL 8'h00 // data pointer (low)`define OC8051_RST_P0 8'b1111_1111 // port 0`define OC8051_RST_P1 8'b1111_1111 // port 1`define OC8051_RST_P2 8'b1111_1111 // port 2`define OC8051_RST_P3 8'b1111_1111 // port 3`define OC8051_RST_IP 8'b0000_0000 // interrupt priority`define OC8051_RST_IE 8'b0000_0000 // interrupt enable`define OC8051_RST_TMOD 8'b0000_0000 // timer/counter mode control`define OC8051_RST_TCON 8'b0000_0000 // timer/counter control`define OC8051_RST_TH0 8'b0000_0000 // timer/counter 0 high bits`define OC8051_RST_TL0 8'b0000_0000 // timer/counter 0 low bits`define OC8051_RST_TH1 8'b0000_0000 // timer/counter 1 high bits`define OC8051_RST_TL1 8'b0000_0000 // timer/counter 1 low bits`define OC8051_RST_SCON 8'b0000_0000 // serial control`define OC8051_RST_SBUFF 8'bxxxx_xxxx // serial data buffer//// ram read select//`define OC8051_RRS_RN 2'b00 // registers`define OC8051_RRS_I 2'b01 // indirect addressing`define OC8051_RRS_D 2'b10 // direct addressing`define OC8051_RRS_SP 2'b11 // stack pointer`define OC8051_RRS_DC 2'b00 // don't c//// ram write select//`define OC8051_RWS_RN 3'b000 // registers`define OC8051_RWS_D 3'b001 // direct addressing`define OC8051_RWS_I 3'b010 // indirect addressing`define OC8051_RWS_SP 3'b011 // stack pointer`define OC8051_RWS_ACC 3'b100 // accumulator`define OC8051_RWS_D3 3'b101 // direct address (op3)`define OC8051_RWS_DPTR 3'b110 // data pointer (high + low)`define OC8051_RWS_B 3'b111 // b register`define OC8051_RWS_DC 3'b000 ////// immediate data select//`define OC8051_IDS_OP2 2'b00 // operand 2`define OC8051_IDS_OP3 2'b01 // operand 3`define OC8051_IDS_PCH 2'b10 // pc high`define OC8051_IDS_PCL 2'b11 // pc low`define OC8051_IDS_DC 2'bxx // //// pc in select//`define OC8051_PIS_DC 2'bxx // dont c`define OC8051_PIS_SP 2'b00 // stack ( des1 -- serial)`define OC8051_PIS_ALU 2'b01 // alu {des1, des2}`define OC8051_PIS_I11 2'b10 // 11 bit immediate`define OC8051_PIS_I16 2'b11 // 16 bit immediate//// compare source select//`define OC8051_CSS_AZ 3'b000 // eq = accumulator == zero`define OC8051_CSS_AR 3'b001 // eq = accumulator == ram`define OC8051_CSS_AC 3'b010 // eq = accumulator == constant`define OC8051_CSS_CR 3'b011 // eq = constant == ram`define OC8051_CSS_DES 3'b100 // eq = destination == zero`define OC8051_CSS_CY 3'b101 // eq = cy`define OC8051_CSS_BIT 3'b110 // eq = b_in`define OC8051_CSS_DC 3'bxxx // don't care//// pc Write//`define OC8051_PCW_N 1'b0 // not`define OC8051_PCW_Y 1'b1 // yes////psw set//`define OC8051_PS_NOT 2'b00 // DONT`define OC8051_PS_CY 2'b01 // only carry`define OC8051_PS_OV 2'b10 // carry and overflov`define OC8051_PS_AC 2'b11 // carry, overflov an ac...//// rom address select//`define OC8051_RAS_PC 1'b0 // program counter`define OC8051_RAS_DES 1'b1 // alu destination//// write accumulator//`define OC8051_WA_N 1'b0 // not`define OC8051_WA_Y 1'b1 // yes////external ram address select//`define OC8051_EAS_DPTR 1'b0 // data pointer`define OC8051_EAS_RI 1'b1 // register R0 or R1`define OC8051_EAS_DC 1'bx////write ac from des2//`define OC8051_WAD_N 1'b0 //`define OC8051_WAD_Y 1'b1 ////////////////////////////////////////////////////////// Timer/Counter modes//`define OC8051_MODE0 2'b00  // mode 0`define OC8051_MODE1 2'b01  // mode 0`define OC8051_MODE2 2'b10  // mode 0`define OC8051_MODE3 2'b11  // mode 0//// Interrupt numbers (vectors)//`define OC8051_INT_T0 8'h0b  // T/C 0 owerflow interrupt`define OC8051_INT_T1 8'h1b  // T/C 1 owerflow interrupt`define OC8051_INT_X0 8'h03  // external interrupt 0`define OC8051_INT_X1 8'h13  // external interrupt 1//// miscellaneus//`define OC8051_RW0 1'b0`define OC8051_RW1 1'b1

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -