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

📄 printer.c

📁 微打驱动。可以应用。经过验证。
💻 C
字号:
//-----------------------------------------------------------------------------
// 版权归新华龙电子公司所有
//-----------------------------------------------------------------------------
// 文件名:printer.c
//
// 编写人:lc
//
// 编写时间:2005/2/25
//
// 目标器件: C8051F02x
//
// 编译工具: Silicon Laboratories IDE
//
//程序说明:
//  此程序运行时就可驱动微型打印机打印字符或汉字,打印内容可自己定义 .
//------------------------------------------------------------------------------------
// 头文件包含
//------------------------------------------------------------------------------------
#include <c8051f020.h>                 
#include <intrins.h>
//------------------------------------------------------------------------------------
// 常量定义
//------------------------------------------------------------------------------------
#define SYSCLK 2000000                   //系统工作频率

unsigned char Gongsi[] ="新华龙电子";
unsigned char Wangzhi[]="www.xhl.com.cn";

//------------------------------------------------------------------------------------
// 函数定义
//------------------------------------------------------------------------------------
void PORT_Init(void);

//------------------------------------------------------------------------------------
// 主程序
//------------------------------------------------------------------------------------
void main (void) {
	unsigned char j,k,temp;
	unsigned char xdata *data point;
	unsigned char *data lcdpoint;
	unsigned int i;
    
   	WDTCN = 0xde;       //禁止看门狗定时器
   	WDTCN = 0xad;
   	PORT_Init();
	while(1)
	{                         					  
		point = 0x8200;
		*point = 0x1b;
		for(i=0;i<100;i++);
		*point = 0x40;
		for(k=0;k<200;k++)
		{
			for(i=0;i<5000;i++);
		}
		lcdpoint = &Wangzhi;
	   	for(j=0;j<14;j++) 
	   	{                         
			point = 0x8200;
			temp = *lcdpoint;
			*point = temp;
			lcdpoint++;
	    	for(i=0;i<5000;i++);
	    	for(i=0;i<5000;i++);
	    	for(i=0;i<5000;i++);
	   	}
		*point = 0x0d;
		for(k=0;k<100;k++)
		{
			for(i=0;i<5000;i++);
		}

		point = 0x8200;
		*point = 0x1b;
		for(i=0;i<500;i++);
		*point = 0x40;
		for(k=0;k<100;k++)
		{
			for(i=0;i<5000;i++);
		}
		lcdpoint = &Gongsi;
	   	for(j=0;j<10;j++) 
	   	{                         
			point = 0x8200;
			temp = *lcdpoint;
			*point = temp;
			lcdpoint++;
	    	for(i=0;i<5000;i++);
	    	for(i=0;i<5000;i++);
	    	for(i=0;i<5000;i++);
	   	}
		*point= 0x0a;
		for(k=0;k<250;k++)
		{
			for(i=0;i<5000;i++);
		}
		_nop_();
		}
}

//------------------------------------------------------------------------------------
//函数名称:    PORT_Init ()
//函数功能:      通用I/O口及交叉开关初始化
//入口参数:      无
//出口参数:      无
//全局变量引用:  无
//调用模块:      无 
//------------------------------------------------------------------------------------
//
void PORT_Init (void)
{
   XBR2    = 0x40;      // 使能交叉开关
   P74OUT |= 0xff;      // P5、P6、P7设为推挽输出
   EMI0CF |= 0x2c;		/*EMIF工作在地址/数据复用方式,只用外部存储器,ALE高/低脉宽占1个SYSCLK周期*/
   EMI0TC |= 0x6c;		/*地址建立/保持时间占0个SYSCLK周期,/WR和/RD占12个SYSCLK周期*/
}

⌨️ 快捷键说明

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