?? main.c
字號(hào):
#include <absacc.h>
#include <intrins.h>
#include <./Atmel/at89x51.h>
//定義常量
#define PrintStart 0x30
#define PrintLen 0x10
#define para8255Port_Mode 0
#define para8255Port_A 1
#define para8255Port_B 2
#define para8255Port_C 3
#define para8255reg_Mode XBYTE[0x7FFF]
#define para8255reg_PA XBYTE[0x7FFC]
#define para8255reg_PB XBYTE[0x7FFD]
#define para8255reg_PC XBYTE[0x7FFE]
//定義變量
sfr para8255_Bus=0x80;
unsigned char data *Print_ptr;
bit print_on;
bit RW_8255;
unsigned char g_FirstByteAddr;
unsigned char g_ByteNum;
unsigned char g_ReadRegFor8255;
unsigned char g_WriteRegFor8255;
unsigned char CMD_8255;
unsigned char PortX_8255;
unsigned char ByteToBus;
//函數(shù)聲明
void Print_fstByte(g_FirstByteAddr,g_ByteNum);
void Print_aByte(void);
void RdWt_8255(RW_8255,PortX_8255,ByteToBus);
/*******************************************************
功能:主函數(shù)
描述:初始化、啟動(dòng)打印、進(jìn)入空閑等待模式
參數(shù):無
返回:無
********************************************************/
main()
{
P1=0x00;
P2=0x00;
P3=0xFF;
IE=0x80;
print_on=0;
g_FirstByteAddr = 0x30;
g_ByteNum = 0x00;
RdWt_8255(1,0,0xA4);//初始化8255
while(1)
{
//此處添加其它程序,例如接收或等待打印命令;
//確認(rèn)打印,則print_on=1;
if (print_on)
{
EX1 = 1;
Print_fstByte(PrintStart,PrintLen);
};//end of if (print_on)
};//end of while(1)
}
/*******************************************************
功能:RW_8255
描述:讀寫8255
參數(shù):RW_8255:1表示寫8255,0表示讀8255
PortX_8255:指示8255工作端口
ByteToBus:要寫的數(shù)據(jù)
返回:如果RW_8255參數(shù)為0,則返回讀結(jié)果g_ReadRegFor8255
********************************************************/
void RdWt_8255(RW_8255,PortX_8255,ByteToBus)
{
if(RW_8255)
{
switch(PortX_8255){
case para8255Port_Mode:
para8255reg_Mode = ByteToBus;
break;
case para8255Port_A:
para8255reg_PA = ByteToBus;
break;
case para8255Port_B:
para8255reg_PB = ByteToBus;
break;
case para8255Port_C:
para8255reg_PC = ByteToBus;
break;
default:
para8255reg_PA = 0x00;
para8255reg_PB = 0x00;
para8255reg_PC = 0x00;
break;
};//end of switch(PortX_8255)
}
else
{
switch(PortX_8255){
case para8255Port_Mode:
g_ReadRegFor8255 = para8255reg_Mode;
break;
case para8255Port_A:
g_ReadRegFor8255 = para8255reg_PA;
break;
case para8255Port_B:
g_ReadRegFor8255 = para8255reg_PB;
break;
case para8255Port_C:
g_ReadRegFor8255 = para8255reg_PC;
break;
default:
g_ReadRegFor8255 = 0x00;
break;
};//end of switch(PortX_8255)
};//end of if(RW_8255)
}//end of this function
/*******************************************************
功能:Print_fstByte
描述:打印第一個(gè)字節(jié)
參數(shù):g_FirstByteAddr,g_ByteNum
返回:無
********************************************************/
void Print_fstByte(g_FirstByteAddr,g_ByteNum)
{
Print_ptr = g_FirstByteAddr;
RdWt_8255(1,1,*Print_ptr);
Print_ptr++;
g_FirstByteAddr = *Print_ptr;
RdWt_8255(1,1,0x0E);
_nop_();
RdWt_8255(1,1,0x0F);
_nop_();
g_ByteNum--;
}//end of this function
/*******************************************************
功能:Print_aByte
描述:通過中斷打印一個(gè)字節(jié)
參數(shù):無
返回:無
********************************************************/
void Print_aByte(void)interrupt 2
{
if(g_ByteNum!=0)
{
Print_ptr = g_FirstByteAddr;
RdWt_8255(1,1,*Print_ptr);
Print_ptr++;
g_FirstByteAddr = *Print_ptr;
RdWt_8255(1,1,0x0E);
_nop_();
RdWt_8255(1,1,0x0F);
_nop_();
g_ByteNum--;
}
else
{
print_on = 0;
EX1 = 0;
};
}//end of this function
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -