求单片机相关程序解析(1/3)

来源:百度知道 编辑:UC知道 时间:2024/05/07 22:56:15
#include "reg52.h"
#include"18b20.h"
#include "intrins.h"
sbit io_LCD12864_RS = P1^5 ;
sbit io_LCD12864_RW = P1^4 ;
sbit io_LCD12864_EN = P1^3 ;

#define io_LCD12864_DATAPORT P0

#define SET_DATA io_LCD12864_RS = 1 ;
#define SET_INC io_LCD12864_RS = 0 ;
#define SET_READ io_LCD12864_RW = 1 ;
#define SET_WRITE io_LCD12864_RW = 0 ;
#define SET_EN io_LCD12864_EN = 1 ;
#define CLR_EN io_LCD12864_EN = 0 ;

unsigned char code table[]={"0123456789"};

void v_Lcd12864CheckBusy_f( void ) //忙检测函数
{
unsigned int nTimeOut = 0 ;
SET_INC
SET_READ
CLR_EN
SET_EN
while( ( io_LCD12864_DATAPORT & 0x80 ) && ( ++nTimeOut != 0 ) ) ;
CLR_EN
SET_INC
SET_READ
}

void v_Lcd12864SendCmd_f( unsigned char byCmd ) //发送命令
{
v_Lcd12864CheckBusy_f() ;

#include "reg52.h"//声明调用了reg52.h单片机特征库
#include"18b20.h"//声明调用了18b20.h自定义头文件
#include "intrins.h" //声明调用了intrins.h函数库
sbit io_LCD12864_RS = P1^5 ;//将单片机的P1.5口用io_LCD12864_RS来关联,以后对io_LCD12864_RS的操作就是对p1.5口的操作
sbit io_LCD12864_RW = P1^4 ;//原理同上
sbit io_LCD12864_EN = P1^3 ;//原理同上

#define io_LCD12864_DATAPORT P0 //将单片机的P0口用io_LCD12864来关联,以后对io_LCD12864的操作就是对整个P0口的操作(8bit)

#define SET_DATA io_LCD12864_RS = 1 ;//这是#define带赋值的用法,用SET_DATA来代表对io_LCD12864_RS赋1的操作,以后程序中一出现SET_DATA,则io_LCD12864_RS对应的P1.5口就被写1
#define SET_INC io_LCD12864_RS = 0 ;//原理同上
#define SET_READ io_LCD12864_RW = 1 ;//原理同上
#define SET_WRITE io_LCD12864_RW = 0 ;//原理同上
#define SET_EN io_LCD12864_EN = 1 ;//原理同上
#define CLR_EN io_LCD12864_EN = 0 ;//原理同上

unsigned char code table[]={"0123456789"};//在程序代码区定义了一个数组table内容是一个字符串0123456789

/*******************************
忙检测函数