单片机流程图.docx

上传人:b****8 文档编号:9708303 上传时间:2023-02-06 格式:DOCX 页数:15 大小:15.28KB
下载 相关 举报
单片机流程图.docx_第1页
第1页 / 共15页
单片机流程图.docx_第2页
第2页 / 共15页
单片机流程图.docx_第3页
第3页 / 共15页
单片机流程图.docx_第4页
第4页 / 共15页
单片机流程图.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

单片机流程图.docx

《单片机流程图.docx》由会员分享,可在线阅读,更多相关《单片机流程图.docx(15页珍藏版)》请在冰豆网上搜索。

单片机流程图.docx

单片机流程图

精品文档

 

单片机总流程图

 

N

 

开始

 

定义I/O对象,变量

(n,j,i)

 

定义条形码

 

定时器,中断服务初始化

 

8255初始化函数

 

n>=o?

 

Y

HELLO显示函数

 

N

PB8255==0xef

 

Y

OP51显示函数

 

0~99显示函数

 

定时器函数

 

i

 

结束

 

.

精品文档

 

主函数程序

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

#defineOSC_FREQ12000000

#define__10ms(65536-OSC_FREQ/(12000000/9970))

#defineCOM8255XBYTE[0XFFF3]

#definePA8255XBYTE[0XFFF0]

#definePB8255XBYTE[0XFFF1]

#definePC8255XBYTE[0XFFF2]

ucharcodetab[]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6};

ucharcodedis_HELLO[]={0x89,0x86,0xc7,0xc7};

ucharcodedis_op51[]={0xc0,0x8c,0x92,0xf9};

ucharcodedis_code[]={0xcf,0xa4,0xcf,0xa4};

ucharucCnt_10ms=99;

uchari=0;

ucharJ=0;

ucharn=0;

ucharled1;

ucharled2;

sbitP2_4=P2^4;

sbitP3_7=P3^7;

sbitP1_0=P1^0;

sbitP1_1=P1^1;

sbitP1_2=P1^2;

voidDisp_op51();

voidDisp_HELLO();

voidSet_Init_Xint();

voidSet_Init_Timer();

voidDisp_t();

voidDelayX1ms(uintcount);

voidDisp_8255();

voidmain()

{

for(;;)

{

Set_Init_Xint();

Set_Init_Timer();

Disp_8255();

//ucCnt_10ms=99;

//ucLed1=6;

//ucLed2=8;

 

.

精品文档

 

if(n>=1)

{

for(;;)

{

Disp_HELLO();

if(PB8255==0xef)

{

for(;;)

{

Disp_op51();

Disp_t();

for(i=0;i<0xff;i++);

}

}

for(i=0;i<0xff;i++);

}

}

}

}

 

.

精品文档

 

定时器T0流程图

 

开始

 

定时器T0初始化

 

植入初值

 

TR0=1?

 

Y

定时器T0计时

 

重装初值

 

N

 

ucCnt_10ms==200?

 

Y

ucCnt_10ms=0

 

定时器中断服务函数

 

中断返回

 

.结束

精品文档

 

定时器初始化函数程序

 

voidSet_Init_Timer()

{

TMOD=0x01;

TH0=__10ms/256;

TL0=__10ms%256;

EA=1;

ET0=1;

}

 

定时器中断服务函数程序

 

Run_Time0(void)interrupt1using2

{

TR0=0;

TH0=__10ms/256;

TL0=__10ms%256;

TR0=1;

ucCnt_10ms++;

if(ucCnt_10ms==200)//1s

{ucCnt_10ms=0;

led1++;

if(led1==10)//1S时间到更新显示缓冲值

{

led1=0;led2++;}

if(led2==10)

{

led2=0;

}

}

}

 

.

精品文档

 

外部中断0流程图

 

开始

 

外部中断0初始化

 

是否有中断请求?

 

Y

 

中断服务程序

 

TR0=1,n++

 

中断返回

 

结束

 

.

精品文档

 

外部中断初始化函数程序

 

voidSet_Init_Xint()

 

{

 

IT0=1;

 

EX0=1;

 

EA=1;

 

}

 

定时器中断服务函数程序

 

Run_Xint0(void)interrupt0using1

 

{

 

n++;

 

TR0=1;

 

}

 

.

精品文档

 

独立式按键流程图

 

开始

 

定义ABC口

 

8255入口地址

 

8255初始化

 

PB8255==0xef?

(K12)

 

Y

 

OP51函数

 

0~99函数

 

N

i<0xff?

 

Y

 

结束

 

.

精品文档

 

8255定义入口

 

#defineCOM8255XBYTE[0XFFF3]

#definePA8255XBYTE[0XFFF0]

#definePB8255XBYTE[0XFFF1]

#definePC8255XBYTE[0XFFF2]

sbitP3_7=P3^7;

sbitP1_0=P1^0;

sbitP1_1=P1^1;

sbitP1_2=P1^2;

 

8255初始化函数程序

 

voidDisp_8255()

{

P3_7=0;

P1_0=0;

P1_1=1;

P1_2=0;

COM8255=0x82;

}

 

.

精品文档

 

HELLO显示函数程序

 

voidDisp_HELLO()//HELLO显示函数

{

SCON=0x00;

SBUF=0xFC;

P2_4=0;

while(!

TI);

TI=0;

P2_4=1;

P2_4=0;

SBUF=0x02;

while(!

TI);

TI=0;

P2_4=1;

 

P1=0x7A;

P2=dis_HELLO[0];

DelayX1ms(5);

P1=0xBA;

P2=dis_HELLO[1];

DelayX1ms(5);

P1=0xDA;

P2=dis_HELLO[2];

DelayX1ms(5);

P1=0xEA;

P2=dis_HELLO[3];

DelayX1ms(5);

 

}

 

.

精品文档

 

OP51显示函数程序

voidDisp_op51()

{

P1=0x7F;

P2=dis_op51[0];

DelayX1ms(5);

P1=0xBF;

P2=dis_op51[1];

DelayX1ms(5);

P1=0xDF;

P2=dis_op51[2];

DelayX1ms(5);

P1=0xEF;

P2=dis_op51[3];

DelayX1ms(5);

}

 

0~99显示函数程序

 

voidDisp_t()

{

SCON=0x00;

SBUF=tab[led2];

P2_4=0;

while(!

TI);

TI=0;

P2_4=1;

P2_4=0;

SBUF=tab[led1];

while(!

TI);

TI=0;

P2_4=1;

}

 

.

精品文档

 

延时10ms函数程序

 

voidDelayX1ms(uintcount)

{

uintj;

while(count--!

=0)

{

for(j=0;j<72;j++);

}

}

 

.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1