您好,欢迎来到欧得旅游网。
搜索
您的当前位置:首页单片机流程图(参考模板)

单片机流程图(参考模板)

来源:欧得旅游网
传播优秀Word版文档 ,希望对您有帮助,可双击去除!

单片机总流程图

开始 定义I/O对象,变量(n,j,i) 定义条形码 定时器,中断服务初始化 8255初始化函数 N Yn>=o? HELLO显示函数 N PB8255==0xef YOP51显示函数 0~99显示函数 定时器函数 i传播优秀Word版文档 ,希望对您有帮助,可双击去除!

主函数程序

#include #include

#define uchar unsigned char #define uint unsigned int

#define OSC_FREQ 12000000

#define __10ms (65536 - OSC_FREQ/(12000000/9970)) #define COM8255 XBYTE[0XFFF3] #define PA8255 XBYTE[0XFFF0] #define PB8255 XBYTE[0XFFF1] #define PC8255 XBYTE[0XFFF2]

uchar code tab[]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6}; uchar code dis_HELLO[]={0x,0x86,0xc7,0xc7}; uchar code dis_op51[]={0xc0,0x8c,0x92,0xf9}; uchar code dis_code[]={0xcf,0xa4,0xcf,0xa4}; uchar ucCnt_10ms=99; uchar i=0; uchar J=0; uchar n=0; uchar led1; uchar led2;

sbit P2_4=P2^4; sbit P3_7=P3^7; sbit P1_0=P1^0; sbit P1_1=P1^1; sbit P1_2=P1^2; void Disp_op51 (); void Disp_HELLO(); void Set_Init_Xint(); void Set_Init_Timer(); void Disp_t();

void DelayX1ms(uint count); void Disp_8255(); void main() {

for(;;) { Set_Init_Xint(); Set_Init_Timer(); Disp_8255();

//ucCnt_10ms =99; //ucLed1 = 6; //ucLed2 = 8;

传播优秀Word版文档 ,希望对您有帮助,可双击去除!

}

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++); } } }

传播优秀Word版文档 ,希望对您有帮助,可双击去除!

定时器T0流程图

开始 定时器T0初始化 植入初值 TR0=1? Y 定时器T0计时 重装初值 N ucCnt_10ms==200? Y ucCnt_10ms=0 定时器中断服务函数 中断返回 结束 传播优秀Word版文档 ,希望对您有帮助,可双击去除!

定时器初始化函数程序

void Set_Init_Timer() {

TMOD=0x01;

TH0 = __10ms/256; TL0 = __10ms%256; EA=1; ET0=1; }

定时器中断服务函数程序

Run_Time0(void) interrupt 1 using 2 {

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 ; } } }

传播优秀Word版文档 ,希望对您有帮助,可双击去除!

外部中断0流程图

开始 外部中断0初始化 是否有中断请求? Y 中断服务程序 TR0=1,n++ 中断返回 结束

传播优秀Word版文档 ,希望对您有帮助,可双击去除!

外部中断初始化函数程序

void Set_Init_Xint() {

IT0=1;

EX0=1; EA=1; }

定时器中断服务函数程序

Run_Xint0(void) interrupt 0 using 1 { n++; TR0=1; }

传播优秀Word版文档 ,希望对您有帮助,可双击去除!

式按键流程图

开始 定义ABC口8255入口地址 8255初始化 PB8255==0xef?(K12) Y OP51函数 0~99函数 N i<0xff? Y 结束

传播优秀Word版文档 ,希望对您有帮助,可双击去除!

8255定义入口

#define COM8255 XBYTE[0XFFF3] #define PA8255 XBYTE[0XFFF0] #define PB8255 XBYTE[0XFFF1] #define PC8255 XBYTE[0XFFF2] sbit P3_7=P3^7; sbit P1_0=P1^0; sbit P1_1=P1^1; sbit P1_2=P1^2;

8255初始化函数程序

void Disp_8255() {

P3_7=0; P1_0=0; P1_1=1; P1_2=0;

COM8255=0x82; }

传播优秀Word版文档 ,希望对您有帮助,可双击去除!

HELLO显示函数程序

void Disp_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); }

传播优秀Word版文档 ,希望对您有帮助,可双击去除!

OP51显示函数程序

void Disp_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显示函数程序

void Disp_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; }

传播优秀Word版文档 ,希望对您有帮助,可双击去除!

延时10ms函数程序

void DelayX1ms(uint count) {

uint j;

while(count--!=0) {

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

---精心整理,希望对您有所帮助

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- ovod.cn 版权所有 湘ICP备2023023988号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务