📄 c8279s.c
字号:
/**********************************************************************************************
*名称:C8279S.C *
*功能:8279显示和键盘控制 *
*说明:主程序调用显示和键盘输出函数,采用diss数组作缓冲区.table为字符"0"--"F"所对应的段码表. *
*输入输出:8279的命令端口地址:0xdfff,数据口地址:0xdffe,晶振:6MHz,分频数:10 *
*接线图如C8279S.JPG *
************************************************************************************************/
#include <reg51.h>
#include <absacc.h>
#define COM XBYTE [0xdfff] /*命令/状态口 */
#define uchar unsigned char
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar idata diss[8]={0,1,2,3,4,5,6,7};
sbit clflag=ACC^7;
uchar keyin();
uchar deky();
void disp(uchar idata *d);
void main(void)
{
uchar i;
COM=0xd1; /*总清除命令 */
do {ACC=COM;}
while(clflag==1); /*等待清除结束 */
COM=0x00;COM=0x2a; /*键盘、显示方式:8个,左输入,;时钟分频:10分频 */
while(1)
{for(i=0;i<8;i++)
{disp(diss); /*显示缓冲区内容*/
diss[i]=keyin(); /*键盘输入到显示缓冲*/
}
}
}
void disp(d) /*显示函数 */
uchar idata *d;
{ uchar i;
COM=0x90;
for(i=0;i<8;i++)
{COM=i+0x80;
DAT=table[*d];
d++;
}
}
uchar keyin(void) /*取键值函数 */
{
uchar i;
while(deky()==0); /*无键按下等待*/
COM=0x40; /*读FIFO RAM命令*/
i=DAT;i=i&0x3f; /*取键盘数据低6位 */
return(i); /*返回键值 */
}
uchar deky(void) /*判断FIFO有键按下的函数 */
{ uchar k;
k=COM;
return(k&0x0f); /*非零有键按下 */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -