📄 8080_parallel_base.c
字号:
/********************************************************/
/*8080_parallel_base.c*/
/********************************************************/
/* 模块: 8080_parallel_base.c */
/* 描述: 8080并口通讯模块 */
/* 用于定义工作6800并口各种基本操作 */
/* 处理器: */
/* 调用函数: */
/* 版本历史: */
/* ================================================== */
/* V1.0 */
/* 作者: AncentLee */
/* 日期: */
/* 修改原因: */
/* ================================================== */
/********************************************************/
#include "config.H"
/*F_parallel_init****************************************/
/* 函数名: */
/* 参数: */
/* 返回值: */
/* 作用域: */
/* 功能: */
/********************************************************/
void parallel_init(void)
{
IO0DIR=IO0DIR|(1<<OLED_CS)|(1<<OLED_RES)|(1<<OLED_DC)|(1<<OLED_WR)|(1<<OLED_RD);//将OLED相关控制引脚配置为输出
IO0CLR=(1<<OLED_RES);//复位OLED
DelayNS (1);
IO0SET=(1<<OLED_CS)|(1<<OLED_RES)|(1<<OLED_WR)|(1<<OLED_RD);//置位OLED_CS、OLED_WR和OLED_RD,取消OLED复位
}
/* End of F_parallel_init********************************/
/*F_parallel_write_command*******************************/
/* 函数名: */
/* 参数: */
/* 返回值: */
/* 作用域: */
/* 功能: */
/********************************************************/
void parallel_write_command(uint8 command_byte)
{
IO0DIR=(IO0DIR|(0xff<<OLED_DATA));//设置8位数据线为输出
IO0CLR=(1<<OLED_DC)|(0xff<<OLED_DATA);//清零OLED_DC位,表示进行命令操作;同时清零8位数据线
IO0SET=(command_byte<<OLED_DATA);//将8位命令字节放到总线上
IO0CLR=(1<<OLED_CS)|(1<<OLED_WR);//片选OLED且打开写使能
//_nop_(); //等待写入完成
IO0SET=(1<<OLED_CS)|(1<<OLED_WR);//拉高CS,取消OLED片选且关闭写使能
}
/* End of F_parallel_write_command***********************/
/*F_parpllel_write_data**********************************/
/* 函数名: */
/* 参数: */
/* 返回值: */
/* 作用域: */
/* 功能: */
/********************************************************/
void parallel_write_data(uint8 data_byte)
{
IO0DIR=IO0DIR|(0xff<<OLED_DATA);//设置8位数据线为输出
IO0CLR=(0xFF<<OLED_DATA);//清零8位数据线
IO0SET=(1<<OLED_DC)|(data_byte<<OLED_DATA);//置位OLED_DC位,表示进行数据操作;同时将8位数据字节放到总线上
IO0CLR=(1<<OLED_CS)|(1<<OLED_WR);//片选OLED且打开写使能
//_nop_(); //等待写入完成
IO0SET=(1<<OLED_WR)|(1<<OLED_CS);//拉高CS,取消OLED片选且关闭写使能
}
/* End of F_*********************************************/
/*F_*****************************************************/
/* 函数名: */
/* 参数: */
/* 返回值: */
/* 作用域: */
/* 功能: */
/********************************************************/
uint8 parallel_read_command(void)
{
uint8 command_byte;
IO0DIR=IO0DIR&(0xffffffff-(0xff<<OLED_DATA));//设置8位数据线为输入
IO0CLR=(1<<OLED_CS)|(1<<OLED_DC)|(1<<OLED_RD);//当前操作转换为命令操作、片选OLED且打开读使能
//_nop_(); //等待数据稳定
command_byte=(uint8)(IO0PIN>>OLED_DATA);
IO0SET=(1<<OLED_CS)|(1<<OLED_RD);//拉高CS,取消OLED片选且关闭读使能
return command_byte;
}
/* End of F_parallel_read_command************************/
/*F_parallel_read_data***********************************/
// 函数名:OLED_init() */
// 参数: 无 */
// 返回值:无 */
// 作用域: */
// 功能: */
/********************************************************/
/*
uint8 parallel_read_data(void)
{
uint8 data_byte;
OLED_RD=0;
OLED_DC=1;
OLED_WR=1;
OLED_parallel_IO=0xff;
OLED_RD=1;
OLED_CS=0;
_nop_();
data_byte=OLED_parallel_IO;
OLED_CS=1;
OLED_RD=0;
return data_byte;
}
*/
/* End of F_parallel_read_data***************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -