单片机总流程图
开始 定义I/O对象,变量(n,j,i) 定义条形码 定时器,中断服务初始化 8255初始化函数 N Yn>=o? HELLO显示函数 N PB8255==0xef YOP51显示函数 0~99显示函数 定时器函数 i 主函数程序 #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
本站由北京市万商天勤律师事务所王兴未律师提供法律服务