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

📄 parallel.c

📁 武汉创维特ARM7实验箱的全部源代码
💻 C
字号:
/****************************************************************************/
/*                                                                          */
/* FILE NAME                                      VERSION                   */
/*                                                                          */
/* PARALLEL.C                                            1.0                */
/*                                                                          */
/* DESCRIPTION                                                              */
/*                                                                          */
/*     JX44B0(S3C44B0X)标准并口打印机驱动实验                               */
/*                                                                          */
/*                                                                          */
/* DATA STRUCTURES                                                          */
/*                                                                          */
/* FUNCTIONS :                                                              */
/*     在JX44B0教学实验箱进行标准并口打印机驱动的实验                       */
/*                                                                          */
/* DEPENDENCIES                                                             */
/*     JX44B0-1                                                             */
/*     JX44B0-2                                                             */
/*     JX44B0-3                                                             */
/*                                                                          */
/*                                                                          */
/* NAME:                                                                    */
/* REMARKS:                                                                 */
/*                                                                          */
/*								Copyright (C) 2003 Wuhan CVTECH CO.,LTD     */
/****************************************************************************/

/****************************************************************************/
/* 学习JX44B0中标准并口打印机驱动函数的编写方法:                           */
/* 注意:                                                                   */
/*     1. 程序运行前请正确接入并口打印机,并通电,具体连接请阅读用户手册    */
/*     2. 请不要带电拔插并口                                                */
/*     3. 请在开始实验后往打印机中加入打印纸                                */
/****************************************************************************/

/* 包含文件 */
#include "44b.h"
#include "44blib.h"
#include "rtc.h"

#define LP_ADDR_CONTROL       	0x0a000000
#define LP_ADDR_STATUS        	0x0a000000
#define LP_ADDR_DATA          	0x0a000002

#define LP_nERROR  				(1 << 3)
#define LP_SELECT  				(1 << 4)
#define LP_PE      				(1 << 5)
#define LP_BUSY    				(1 << 6)
#define LP_nACK    				(1 << 7)

#define LP_nSTROBE       		(1 << 0)
#define LP_AUTOFEED      		(1 << 1)
#define LP_nINIT         		(1 << 2)
#define LP_nSELECT_IN    		(1 << 3)

void printchar(unsigned char);
int lp_ctrl_value = LP_nSTROBE | LP_AUTOFEED | LP_nINIT;

/********************************************************************
// Function name	: Main
// Description	    : 并口打印机驱动实验主函数
// Return type		: void
// Argument         : 
*********************************************************************/
void Main()
{
	unsigned char status;
	
	char  test_data[]= "0123456789\n\n0123456789\n";
	char  *p_test_data;
	
	p_test_data = test_data;
	Uart_Printf("Parallel Printer Test!\n");
	
	/* 初始化 */
	*(unsigned char *)LP_ADDR_CONTROL = lp_ctrl_value;
	
	/* 打印字符串 */
	while(*p_test_data!=0)
	{
		// wait for no busy.
		while( *((unsigned char *)LP_ADDR_STATUS) & LP_BUSY)
			Uart_Printf("status = 0x%x\n", *((unsigned char *)LP_ADDR_STATUS)); 
		
		// send data
		Uart_Printf("%c", *p_test_data);
		*(unsigned char *)LP_ADDR_DATA = *p_test_data++;
		
		// send strobe
		lp_ctrl_value |= LP_nSTROBE;
		*(unsigned char *)LP_ADDR_CONTROL = lp_ctrl_value;
		lp_ctrl_value &= ~LP_nSTROBE;
		*(unsigned char *)LP_ADDR_CONTROL = lp_ctrl_value;
		lp_ctrl_value |= LP_nSTROBE;
		*(unsigned char *)LP_ADDR_CONTROL = lp_ctrl_value;

		// wait ack
		while(!(*((unsigned char *)LP_ADDR_STATUS) & LP_nACK)); 
	}
	
	while(1);
}

⌨️ 快捷键说明

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