#include<reg51.h>
#include<intrins.h>
#define char unsigned char
#define unit unsigned int
sbit k1=P3^;//定义开始键
sbit k2=P3^;//定义暂停键
sbit k3=P3^;//定义模式切换
sbit k4=P3^; //定义速度切换
void disp1();
void disp2();
void disp3();
void typeqiehuan();
void speedqiehuan();
unit speed=;unit type=;unit time=;unit count=;
int flag1=;
void delay(unit s)
{
unit x,y;
for(x=s;x>;x--)
for(y=;y>;y--);
while(flag1==); //毫秒级
}
void disp1()
{
unit i;
P1=P0=0x00;
delay();
/*P1=P0=0x00;
delay(1000);
P1=P0=0x00;
delay(1000);
P1=P0=0x00;
delay(1000);
P1=P0=0x00;
delay(1000);
P1=P0=0x00;
delay(1000);*/
P1=P0=0xff;
for(i=;i<;i++)
{
P1=P0=0x00;
delay();
P1=P0=0xff;
delay();
}
} void disp2()
{
P1=0xff;
P0=0x00;
delay(speed);
/*if(k2==0)
while(1)//如果检测K2按下,死循环
;
else */if(k2==)
goto l;
l:P1=0x00;
P0=0xff;
delay(speed);
} void disp3()
{
P1=0x33;
P0=0xCC;
delay(speed);
/* if(k2==0)
while(1)
;
else */if(k2==)
goto m;
m:P1=0xCC;
P0=0x33;
delay(speed);
} void typeqiehuan()
{
while()
{
while(k2==);
if(type%==)
disp2();
if(type%==)
disp3();
}
}
void speedqiehuan()
{
//while(1)
//{
//while(k4==0)
if(time%==)
speed=;
else if(time%==)
speed=;
else if(time%==)
speed=;
else if(time%==)
speed=;
//}
} void T0_INT() interrupt
{
typeqiehuan();
}
void T1_INT() interrupt
{
count++;
if(count%==)
flag1=;
else
flag1=;
}
void T0_TIME() interrupt
{
TH0=(-)/;//取高八位,算初值
TL0=(-)%;//取低八位,算初值
if(k3==)
{
delay(); //防抖
if(k3==)
type++;
}
if(k4==)
{
delay();
if(k4==)
time++;
}
speedqiehuan();
}
void main()
{
disp1();
//P0=0xff;
//P1=0xff;
//delay(5000);
TMOD=0x01;//T0为工作方式一
IT0 = ;//TCON中控制INT0触发方式位,INT0下降沿触发中断
IT1 = ;
EA = ; //总中断允许控制位
EX0 = ; //允许外部中断INT0
EX1 = ; //允许外部中断INT1
ET0=;//允许计数器T0溢出中断
TH0=(-)/;
TL0=(-)%;
TR0=;//立即开始计数
IP=0x06;//设置优先级
while() //等待人来操作,防止程序过快跑完
{
P1=P0=0x00;
}
}

仿真原理图如下:

最新文章

  1. Maven详解
  2. visual studio for mac的安装初体验
  3. 转: BAT等研发团队的技术博客
  4. 学习SQLite之路(一)
  5. Mac OS Storm+Kafka+Zookeeper配置
  6. 在mysql数据库原有字段后增加新内容
  7. Apache Shiro系列教程之二:十分钟上手Shiro
  8. webservice和restful的区别
  9. java并发编程-线程池的使用
  10. Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-3 显示一个动态的熊猫
  11. 机器学习(一):梯度下降、神经网络、BP神经网络
  12. DNS预获取(dns-prefetch)
  13. 部分PC端安卓管理器使用强行断开重连的方法来连接手机,容易丢书数据,损坏数据
  14. iOS面试必看经典试题分析
  15. sql server 2008 18456错误
  16. 获取所有栈的信息,只有最上面的和最下面的,但是不能获取栈中间的activity信息
  17. keepalive配置支持ipv6、ipv4双棧支持
  18. SDK目录结构
  19. Asp.Net.Identity认证不依赖Entity Framework实现方式
  20. 15-Flink实战项目之实时热销排行

热门文章

  1. JDBC访问数据库的具体步骤(MySql + Oracle + SQLServer)
  2. Speech Super Resolution Generative Adversarial Network
  3. java代码之美(16) ---Java8 Optional
  4. python 分析慢查询日志生成报告
  5. Tomcat 修改日志输出配置 定期删除日志
  6. SSM/SSH框架的MySQL 读写分离实现的一种简单方法
  7. [转]adbkey与adbkey.pub
  8. php 的file 缓存
  9. Idea操作ElasticSearch
  10. c语言标准I/O