8255.c

来自「使用OKI公司8255A控制62256RAM程序,并使用8803液晶显示」· C语言 代码 · 共 101 行

C
101
字号
#include <mega16.h>
#include <delay.h>

#define WR      PORTA.0
#define WR_en   DDRA.0
#define RD      PORTA.1
#define RD_en   DDRA.1
#define CS      PORTB.3
#define CS_en   DDRB.3
#define A0      PORTA.2
#define A0_en   DDRA.2 
#define A1      PORTA.3
#define A1_en   DDRA.3
#define BUS_out PORTC
#define BUS_in  PINC
#define BUS_en  DDRC

void reset8255(unsigned char state)
{
 BUS_en=0xff;A1_en=1;A0_en=1;CS_en=1;RD_en=1;WR_en=1;
 
 CS=0;          //片选上
 A1=1;          A0=1;//写入寄存器
 WR=0;
 RD=1;
 BUS_out=state;
 WR=1;
 CS=1;
 BUS_en=0x00;
 } 
 
void send8255(unsigned char data,unsigned char direct) 
{
 BUS_en=0xff;
 CS=0;
 switch(direct)
 {
  case 0: A1=0;A0=0;break;
  case 1: A1=0;A0=1;break;
  case 2: A1=1;A0=0;break;
  case 3: A1=1;A0=1;break;
  } 
 WR=0;
 RD=1;
 BUS_out=data;
 WR=1;
 CS=1;  
 }
 
void send_a(unsigned char data)
{
 BUS_en=0xff; 
 CS=0;
 A1=0;A0=0; 
 WR=0;
 RD=1;
 BUS_out=data;
 
 WR=1;
 CS=1;
 BUS_en=0x00;
 }
 
void send_b(unsigned char data)
{
 BUS_en=0xff;
 CS=0;
 A1=0;A0=1;
 WR=0;
 RD=1;
 BUS_out=data;
 WR=1;
 CS=1;
 BUS_en=0x00;
 }
  
void send_c(unsigned char data)
{
 BUS_en=0xff;
 CS=0;
 A1=1;A0=0; 
 WR=0;
 RD=1;
 BUS_out=data;
 WR=1;
 CS=1;
 BUS_en=0x00;
 } 
  
void send_r(unsigned char data)
{
 BUS_en=0xff;
 CS=0;
 A1=1;A0=1;
 WR=0;
 RD=1;
 BUS_out=data;
 WR=1;
 CS=1;
 BUS_en=0x00;
 }    

⌨️ 快捷键说明

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