📄 90pc-mcu.c
字号:
#include<io8515.h>
#pragma interrupt_handler uart_rec:10
#define clrcs PORTC&=~0x10;
#define setcs PORTC|=0x10;
#define clrclk PORTC&=~0x08;
#define setclk PORTC|=0x08;
void delay(unsigned char mst) //延时子程序
{ unsigned char i;
for (i = 1; i<mst; i++)
;
}
void send(unsigned char temp) //发送子程序
{
unsigned char i;
clrcs
delay(150);
clrclk
for(i=8;i>0;i--)
{
PORTC=(temp&0x80)?PORTC|0x04:PORTC&0xfb;
setclk
delay(10);
clrclk
delay(10);
temp=temp<<1;
}
PORTC&=~0x04;
}
void write279(unsigned char cmd1, unsigned char cmd2)
{
send(cmd1);
send(cmd2);
setcs;
}
receive(void) //接收子程序
{
unsigned char i,rec_buff;
DDRC&=~0x04;
PORTC&=~0x04;
delay(150);
for(i=8;i>0;i--)
{
rec_buff=rec_buff<<1;
setclk
delay(10);
rec_buff=(PINC&0x04)==0?rec_buff&0xfe:rec_buff|0x01;
clrclk
delay(10);
}
DDRC|=0x04;
PORTC&=~0x04;
return rec_buff;
}
keyscan(void) //键扫子程序
{
static signed char keycode,keypress=0;
if((PINC&0x02)==0)
{
if(keypress==0)
{
send(0x15);
keycode=receive();
setcs
keypress=1;
}
return 0xff;
}
if(keypress==1)
{
keypress=0;
return keycode;
}
return 0xff;
}
void main()
{
unsigned char i,j,c;
DDRC=0xfd;
PORTC=0xf7;
send(0xa4);
setcs
UBRR=51;
UCR=0x98;
SREG|=0x80;
waitkey:
c=keyscan();
if(c!=0xff)
{
write279(0xcf,c);
USR&=~0x40;
UDR=c;
while(!(USR&0x40));
USR&=~0x40;
}
goto waitkey;
}
void uart_rec()
{
unsigned char i;
if((USR&0x10)==1) return;
i=UDR;
write279(0xc9,i/16);
write279(0xc8,i%16);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -