No.7798 作者:红蚂蚁 邮件: ID:2468 登陆:1次 文章数:8篇 最后登陆IP: 最后登陆:2002/5/23 11:36:00 注册:2002/5/23 11:36:00 财富:32 发帖时间:2002/5/24 12:57:00 发贴者IP:218.12.100.3 标题:红蚂蚁:初学者:感谢各位的帮助,我的学C51后的第一个小程序出来了,贴出来,大家帮我看看还有什么可以改进的地方。 摘要:No.7798初学者:感谢各位的帮助,我的学C51后的第一个小程序出来了,贴出来,大家帮我看看还有什么可以改进的地方。 /*p1.0~p1.3 接按键,低电平有效,防抖40ms。按一次亮,再按一次灭。 四个键不可同时按下。按一个键超过30s,开始闪烁,直到松开为止。 p2.0~p2.3 接led, 低电平有效 p3.7 工作灯,低电平有效。周期0.4s key 为键值积存器 _tt1为防抖使用时间积存器 _tt2为工作灯使用时间积存器 _tt3为3秒后闪烁计数器 p1reg为p1口上次值积存器 */ #include <reg51.h> unsigned char key=0xff; unsigned int _tt1=0; unsigned char _tt2=0; unsigned char _tt3=0; unsigned char p1reg=0xff; sbit p20=P2^0; sbit p21=P2^1; sbit p22=P2^2; sbit p23=P2^3; sbit p37=P3^7; /*TO中断服务子程序 */ void timer0(void) interrupt 1 using 2 { TH0=-2000/256; TL0=-2000%256; _tt2++; _tt3++; if((P1^p1reg)&&(P1!=0xff)) /*下降沿*/ { _tt1++; key=P1; key=~key; if(_tt1>10000) { _tt1=10000; if((P1^p1reg)&&(P1!=0xff)) { if (_tt3>50) { switch(key) { case 1:p20=!p20;break; case 2:p21=!p21;break; case 4:p22=!p22;break; case 8:p23=!p23;break; default :break; } _tt3=0;   ......
>>返回讨论的主题
|