yy.c
来自「找了很久,这里的C8051F020的UCOS移植.020没有SFRPAGE. 」· C语言 代码 · 共 146 行
C
146 行
#include <includes.h>
#include "key7279.h"
void TaskStartyya(void *yydata) reentrant;
void TaskStartyyb(void *yydata) reentrant;
void TaskStartyyc(void *yydata) reentrant;
void TaskStartyyd(void *yydata) reentrant;
void config();
OS_STK TaskStartStkyya[MaxStkSize];//注意:我在ASM文件中设置?STACK空间为40H即64。
OS_STK TaskStartStkyyb[MaxStkSize];
OS_STK TaskStartStkyyc[MaxStkSize];
OS_STK TaskStartStkyyd[MaxStkSize];
extern uchar ab[8];
OS_EVENT *CommMbox,*sem,*qbox;
void *Commsg[4] ;
void config()
{//看门狗禁止
WDTCN=0x07;
WDTCN=0xde;
WDTCN=0xad;
SFRPAGE=0x0f;
//交叉开关使能,但没有进行外围设备配置
XBR0=0x00; //IIC配置到引脚
//SPI配置到引脚 三线四线由SPI寄存器决定
XBR1=0x00;//INT0和INT1配置到管脚
//xbrP1.7置位输出系统时钟频率
XBR3=0x00;
XBR2=0x42;//不将P0.5 P0.6 P0.7 分配到管脚
//将T4分配到引脚,输出方波
//XBR2=0x41; //ADC0引脚连接到端口
//引脚输出配置
SFRPAGE=0x0f;
P0MDOUT = 0xff; //sclk和NSS为开漏输出 ,MOSI为主输出
P1MDOUT = 0xff;
P2MDOUT = 0xff;
P3MDOUT = 0xff;
P5MDOUT = 0xff; // P5口设为推挽方式
//P5MDOUT = 0xf8;
P6MDOUT = 0x00;
P7MDOUT = 0xff;
P3MDIN = 0xff;
//晶振配置,采用内部晶振 内部晶振是24.5M
SFRPAGE=0x0f;
CLKSEL =0x00;
OSCXCN =0x00;
OSCICN =0x83;
}
void main(void)
{
config();
OSInit();
InitTimer0();
OSTaskCreate(TaskStartyya, (void *)0, &TaskStartStkyya[0],2);
OSTaskCreate(TaskStartyyb, (void *)0, &TaskStartStkyyb[0],3);
OSTaskCreate(TaskStartyyc, (void *)0, &TaskStartStkyyc[0],4);
OSTaskCreate(TaskStartyyd, (void *)0, &TaskStartStkyyd[0],5);
CommMbox = OSMboxCreate((void *)0);
qbox = OSQCreate(&Commsg[0],4);
sem = OSSemCreate(1);
OSStart();
}
void TaskStartyya(void *yydata) reentrant
{ INT8U err;
INT8U *msg;
yydata=yydata;
qp7279(ab);
for(;;){
msg=OSQPend(qbox,0,&err);
if(err==OS_NO_ERR)
{
displ(ab,*msg);
play7279(ab);
}
else
{
displ(ab,0);
play7279(ab);
}
}
}
void TaskStartyyb(void *yydata) reentrant
{ INT8U err;
INT8U *msg;
yydata=yydata;
for(;;){
msg=OSMboxPend(CommMbox,0,&err);
if(err==OS_NO_ERR)
{
displ(ab,*msg);
play7279(ab);
}
else
{
displ(ab,0);
play7279(ab);
}
}
}
void TaskStartyyc(void *yydata) reentrant
{ INT8U err;
yydata=yydata;
for(;;){
OSSemPend(sem,0,&err);
if(err==OS_NO_ERR)
{
displ(ab,3);
play7279(ab);
}
else
{
displ(ab,0);
play7279(ab);
}
}
}
void TaskStartyyd(void *yydata) reentrant
{ INT8U err;
INT8U youxia=0x02,yx=0x07;
yydata=yydata;
for(;;){
// err=OSQPostFront(qbox,(void *)&yx);
err=OSQPost(qbox,(void *)&yx);
OSTimeDly(OS_TICKS_PER_SEC);
err=OSMboxPost(CommMbox,(void *)&youxia) ;
OSTimeDly(OS_TICKS_PER_SEC*2);
err=OSSemPost(sem);
OSTimeDly(OS_TICKS_PER_SEC*3);
// youxia++;if(youxia==10)youxia=1;
// yx--; if(yx==0) yx=9;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?