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

📄 epson m311.txt

📁 c51经典子程序代码全集
💻 TXT
字号:
C51编程:一点心得 [方塘] [141次] 01-5-18 下午 06:51:32
学了几个星期的C51,做了几个驱动程序。还有一点心得,共享出来。请指点!
1, 当判断P2口的位时,不要直接用 P2^x做判断。最好用按位 & 判断。
    因为在reg51.h中没有定义P2^x 。但编译不会提示出错。
2, 用带参数编译可以得到有汇编程序内容的 *.lst文件。通过查看汇编程序可以找到
    C程序的一些问题。
题。/********************************************************************
                       驱动程? ?zh.c
********************************************************************/
/* LCD 型号:HD44780       */
/*打印机型号: EPSON M311   */
#include <reg51.h>
#include <absacc.h>
#include <intrins.h>
#define  uchar     unsigned char
#define  uint      unsigned int
                                   //定义8255I/O端口地址
#define  PCC8255   XBYTE[0x007f]   //8255命令口地址
#define  PC8255    XBYTE[0x007e]   //8255的PC口地址
#define  PB8255    XBYTE[0x007d]   //8255的PC口地址
#define  PA8255    XBYTE[0x007c]   //8255的PC口地址

sfr      RPCTL      = 0xD8;
sbit     RPCTL_5    = RPCTL^5; 
sbit     LS164A     = P2^5;
sbit     LS164cp    = P2^6;
sbit     Print_busy = P3^3;
sbit     IC_RST     = P1^1;
sbit     IC_CLK     = P1^0;
sbit     IC_IO      = P1^2;
sbit     IC_PGM     = P3^2;
uchar code table1[16]="FEDCBA9870123456";
uchar code table2[16]="0000123456789ABC";
void  INIT_8255(void);            /*初始化8255*/

void  LcdInit(void);              /* LCD初始化函数 */
void  LcdCmd(uchar);              /* LCD控制命令函数 */
void  LcdData(uchar);             /* LCD数据输入函数 */
void  LcdClr(void);               /* LCD清屏函数 */
void  LcdStr(uchar *);            /* 显示字符串函数 */
void  LcdDisp(uchar x,uchar d);
void  Delay_msec(uint x);         /* 延时函数 */
uchar Getkey(void);               /*键盘函数 */
void  PrintInit(void);            /*打印初始化函数*/
void  PrintData (uchar  d);       /*打印函数*/
void  PrintString(uchar *p);      //打印字符串

void LcdDisp(uchar x,uchar d)    //指定位置显示字符 x:LCD位置 d:字符
{
  if(x<9)
  {
     LcdCmd(0x80 + x);
     LcdData(d);
  }
  else
  {
     LcdCmd(0xc0 + x);
     LcdData(d);
  }
}
void LcdStr(uchar *p)        /* 显示字符串函数 */ 
{ 
   data uchar i;
   LcdCmd(0x80);             //设置显示数据RAM
   for (i=0;i<=7;i++)
   {
        LcdData(*p);         /* char of LCM */
        p++;
   }
   
   LcdCmd(0xc0);             //设置显示数据RAM
   for (i=0;i<=7;i++)
   {
        LcdData(*p);        /* char of LCM */
        p++;
   } 
}
void  LcdClr()               /* LCD清屏函数

⌨️ 快捷键说明

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