No.96280 作者:雷影 邮件:xyygly@126.com ID:44593 登陆:3次 文章数:3篇 最后登陆IP:220.175.237.232 最后登陆:2006/12/13 22:07:12 注册:2005/12/16 12:44:44 财富:114 发帖时间:2006/8/2 8:09:52 发贴者IP:220.175.236.72 标题:雷影:有关模块化编程和非模块化编程的问题? 摘要:No.96280有关模块化编程和非模块化编程的问题? C51编程:同一程序模块化编程和非模块化编程为什么出现模块化的编译通过后在硬件上通不过呢? [雷影] 2006-8-2 1:10:09 不得不请教各位高手了:同一程序模块化编程和非模块化编程,为什么出现模块化的编译通 过后在硬件上通不过呢?不是提倡要模块化编程吗?结果却是非模块化编程在硬件上能顺利 工作,但是模块化的不行。下面是两种编程的原程序。 模块化编程: 文件1:dingshiqimain.c #include <reg51.h> display(); main() { TMOD=0x01;//定时器0方式1 TH0=(65536-50000)/256;//50ms定时初值 TL0=(65536-50000)%256;//50ms定时初值 EA=1;//开总中断 ET0=1;//开分中断 TR0=1;//启动定时 while(1) { display();//循环调用显示函数 } } 文件2:display.c #include <reg51.h> #define uchar unsigned char sbit P0_6=P0^6;//十位数码管公共极 sbit P0_7=P0^7;//个位数码管公共极 uchar min_buffer1,min_buffer0;//十位,个位显示缓冲区 extern min;//引用timer0interrupt.c定时中断文件的变量 delay3ms();//数码管显示的时间 uchar code discode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴 极数码管的段码 /************************************ *显示函数 *************************************/ display() { min_buffer0=min%10;//取分的个位 min_buffer1=min/10;//取分的十位 P1=discode[min_buffer1];//取分的十位显示段码送P1口 P0_6=0;//开十位数码管 delay3ms();//显示时间3ms P0_6=1;//关十位数码管 P1=discode[min_buffer0];//取分的个位显示段码送P1口 P0_7=0;//开个位数码管 delay3ms();//显示时间3ms P0_7=1;//关个位数码管 } delay3ms() { uchar v,w; for(v=0;v <6;v++) for(w=0;w <248;w++); } 文件3:timer0interrupt.c #include <reg51.h> #define uchar unsigned char uchar secflag=0;//秒标志位 uchar sec=0;//秒初值 uchar min=15;//分初值 extern min_buffer1,min_buffer0;//引用display.c显示文件中的变量 /*********************************************** ......
>>返回讨论的主题
|