📄 ext1.c
字号:
#include "stdio.h"
#include "config.h"
sbit EN=P3^2;
sbit RW=P3^3;
sbit RS=P3^4;
sbit VO=P3^5;
void InitLcd(void);
void WriteData(unsigned char ch);
void WriteCmd(unsigned char ch);
void DelayS(void);
void wait_5ms( void );
void Disp_Char(unsigned char pos,unsigned char ch);
void Disp_Str(unsigned char line,char* str);
unsigned char sec,min,hour,i;
char buffer[21];
void main(void)
{
TMOD = (TMOD & 0XF0) | 0X01;
TL0 = 0x0;
TH0 = 0x0;
TR0 = 1;
ET0 = 1;
SCON = 0x52; /* mode 1: 8-bit UART, enable receiver */
TMOD |= 0x20; /* timer 1 mode 2: 8-Bit reload */
TH1 = 0xfd; /* reload value 9600 baud */
TR1 = 1; /* timer 1 run */
wait_5ms();
InitLcd();
wait_5ms();
VO = 0;
Disp_Str(0," Small RTOS51 V1.20 ");
Disp_Str(1," Current Time is: ");
wait_5ms();
Disp_Str(2," ");
Disp_Str(3," Created by ArcDevil");
OSStart();
}
void TaskA(void)
{
while (1)
{
if (++sec == 60)
{
sec = 0;
if (++min == 60)
{
min = 0;
if (++hour == 24)
{
hour = 0;
}
}
}
sprintf(buffer, " %02bd:%02bd:%02bd ",
hour,
min,
sec);
Disp_Str(2,buffer);
OSWait(K_TMO,10);
}
}
void TaskB(void)
{
while (1)
{
Disp_Str(3,"Written @20041022||");
OSWait(K_TMO,50);
}
}
void TaskC(void)
{
while (1)
{
Disp_Str(3,"TaskC is Running! ");
OSWait(K_TMO,100);
}
}
void InitLcd(void)
{
wait_5ms();
wait_5ms();
wait_5ms();
WriteCmd(0x38);
wait_5ms();
WriteCmd(0x38);
wait_5ms();
WriteCmd(0x38);
wait_5ms();
WriteCmd(0x38);
WriteCmd(0x06);
WriteCmd(0x0c);
WriteCmd(0x01);
WriteCmd(0x80);
}
void WriteData(unsigned char ch)
{
DelayS();
EN = 0;
RS = 1;
RW = 0;
_nop_();
EN = 1;
P1 = ch;
EN = 0;
RS = 0;
}
void WriteCmd(unsigned char ch)
{
DelayS();
EN = 0;
RS = 0;
RW = 0;
_nop_();
EN = 1;
P1 = ch;
EN = 0;
}
void DelayS(void)
{
unsigned char i;
i = 0x1f;
while(i--);
}
void wait_5ms( void )
{
register int i ;
for ( i=0 ; i<1000 ; i++ )
;
}
void Disp_Char(unsigned char pos,unsigned char ch)
{
unsigned char p,x,y;
y = pos/20;
x = pos%20;
switch(y)
{
case 0: p = x + 0x80; break;
case 1: p = x + 0xc0; break;
case 2: p = x + 0x94; break;
case 3: p = x + 0xd4; break;
default:break;
}
WriteCmd(p);
WriteData(ch);
}
void Disp_Str(unsigned char line,char* str)
{
unsigned char l,i;
l = line*20;
for(i = 0 ; i < 20 ; i++)
Disp_Char(l++,*(str+i));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -