Chinaunix首页 | 论坛 | 博客
  • 博客访问: 625470
  • 博文数量: 262
  • 博客积分: 8433
  • 博客等级: 中将
  • 技术积分: 2141
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-31 09:37
文章分类

全部博文(262)

文章存档

2012年(1)

2011年(168)

2010年(92)

2009年(1)

分类: 嵌入式

2011-01-09 21:48:58

  1. //文件:light.c

  2. //项目:装饰灯

  3. //说明:晶振115200


  4. #include <reg52.h>
  5. #include <intrins.h>
  6. #include "delay.h"

  7. typedef unsigned char uchar;
  8. typedef unsigned int uint;

  9. #define LEDON 0
  10. #define LEDOFF 1

  11. //分配IO端口

  12. //重定义I/0引脚名称

  13. sbit led0=P0^0;
  14. sbit led1=P0^1;
  15. sbit led2=P0^2;
  16. sbit led3=P0^3;
  17. sbit led4=P0^4;
  18. sbit led5=P0^5;
  19. sbit led6=P0^6;
  20. sbit led7=P0^7;

  21. sbit led8=P1^0;
  22. sbit led9=P1^1;
  23. sbit led10=P1^2;
  24. sbit led11=P1^3;
  25. sbit led12=P1^4;
  26. sbit led13=P1^5;
  27. sbit led14=P1^6;
  28. sbit led15=P1^7;

  29. sbit led16=P2^0;
  30. sbit led17=P2^1;
  31. sbit led18=P2^2;
  32. sbit led19=P2^3;

  33. //函数声明

  34. void Initial(); //初始化

  35. void LedsOn();        //电灯程序

  36. void LedsOff();        //灭灯程序


  37. void main()
  38. {
  39.     
  40.     Initial();        //初始化


  41.     while(1)
  42.     {
  43.         ;            //空循环,等待中断

  44.     
  45.     }
  46.     
  47.     
  48.     /*
  49.     //test1
  50.     Initial();        //初始化
  51.     P0 = 0x0;
  52.     P1 = 0x0;
  53.     P2 = 0x0;
  54.     P3 = 0x0;
  55.     */
  56. /*
  57.     //test2
  58.     Initial();        //初始化
  59.     while(1)
  60.     {
  61.         LedsOn();
  62.         LedsOff();
  63.     
  64.     }
  65. */

  66.     //test3

  67.         

  68.     
  69. }

  70. void Initial()
  71. {

  72.     //开灯

  73.     //P0=0x0;

  74.     //P1=0x0;

  75.     //P2=0x0;

  76.     //P3=0x0;

  77.     //delay_50ms(20);        //延时1s;

  78.     //关灯

  79.     //P0=0x0;

  80.     //P1=0x0;

  81.     //P2=0x0;

  82. //    P3=0xff;


  83.     //delay_50ms(60);        //延时1s;


  84.     P0=0xff;
  85.     P1=0xff;
  86.     P2=0xff;

  87.     delay_50ms(20);        //延时1s;



  88.     EX0=1; // INT0中断开

  89.     IT0=0; // INT0低电平触发(为1则为下降沿触发)


  90.     EX1=0; // INT1中断关

  91.     IT1=0; // INT1低电平触发(为1则为下降沿触发)


  92.     EA=1; // CPU所有中断开(IE最高位MSB)


  93.     return;
  94. }

  95. void LedsOn()
  96. {
  97.     led19=LEDON;
  98.     delay_50ms(20);        //延时1s;

  99.     
  100.     led18=LEDON;
  101.     delay_50ms(20);        //延时1s;


  102.     led17=LEDON;
  103.     delay_50ms(20);        //延时1s;

  104.     
  105.     led16=LEDON;
  106.     delay_50ms(20);        //延时1s;


  107.     led15=LEDON;
  108.     delay_50ms(20);        //延时1s;

  109.     
  110.     led14=LEDON;
  111.     delay_50ms(20);        //延时1s;


  112.     led13=LEDON;
  113.     delay_50ms(20);        //延时1s;

  114.     
  115.     led12=LEDON;
  116.     delay_50ms(20);        //延时1s;


  117.     led11=LEDON;
  118.     delay_50ms(20);        //延时1s;

  119.     
  120.     led10=LEDON;
  121.     delay_50ms(20);        //延时1s;


  122.     led9=LEDON;
  123.     delay_50ms(20);        //延时1s;

  124.     
  125.     led8=LEDON;
  126.     delay_50ms(20);        //延时1s;


  127.     led7=LEDON;
  128.     delay_50ms(20);        //延时1s;

  129.     
  130.     led6=LEDON;
  131.     delay_50ms(20);        //延时1s;


  132.     led5=LEDON;
  133.     delay_50ms(20);        //延时1s;

  134.     
  135.     led4=LEDON;
  136.     delay_50ms(20);        //延时1s;


  137.     led3=LEDON;
  138.     delay_50ms(20);        //延时1s;

  139.     
  140.     led2=LEDON;
  141.     delay_50ms(20);        //延时1s;


  142.     led1=LEDON;
  143.     delay_50ms(20);        //延时1s;

  144.     
  145.     led0=LEDON;
  146.     delay_50ms(20);        //延时1s;


  147.     delay_50ms(40);        //延时2s

  148.     
  149.     EX0=0;                 //关闭EXT0中断

  150.     EX1=1;                //打开EXT1中断


  151.     return;                //返回

  152. }

  153. void LedsOff()
  154. {
  155.     led0=LEDOFF;
  156.     delay_50ms(20);        //延时1s;

  157.     
  158.     led1=LEDOFF;
  159.     delay_50ms(20);        //延时1s;


  160.     led2=LEDOFF;
  161.     delay_50ms(20);        //延时1s;

  162.     
  163.     led3=LEDOFF;
  164.     delay_50ms(20);        //延时1s;


  165.     led4=LEDOFF;
  166.     delay_50ms(20);        //延时1s;

  167.     
  168.     led5=LEDOFF;
  169.     delay_50ms(20);        //延时1s;


  170.     led6=LEDOFF;
  171.     delay_50ms(20);        //延时1s;

  172.     
  173.     led7=LEDOFF;
  174.     delay_50ms(20);        //延时1s;


  175.     led8=LEDOFF;
  176.     delay_50ms(20);        //延时1s;

  177.     
  178.     led9=LEDOFF;
  179.     delay_50ms(20);        //延时1s;


  180.     led10=LEDOFF;
  181.     delay_50ms(20);        //延时1s;

  182.     
  183.     led11=LEDOFF;
  184.     delay_50ms(20);        //延时1s;


  185.     led12=LEDOFF;
  186.     delay_50ms(20);        //延时1s;

  187.     
  188.     led13=LEDOFF;
  189.     delay_50ms(20);        //延时1s;


  190.     led14=LEDOFF;
  191.     delay_50ms(20);        //延时1s;

  192.     
  193.     led15=LEDOFF;
  194.     delay_50ms(20);        //延时1s;


  195.     led16=LEDOFF;
  196.     delay_50ms(20);        //延时1s;

  197.     
  198.     led17=LEDOFF;
  199.     delay_50ms(20);        //延时1s;


  200.     led18=LEDOFF;
  201.     delay_50ms(20);        //延时1s;

  202.     
  203.     led19=LEDOFF;
  204.     delay_50ms(20);        //延时1s;


  205.     delay_50ms(40);        //延时2s


  206.     EX1=0;                 //关闭EXT1中断

  207.     EX0=1;                //打开EXT0中断

  208.     
  209.     return;                //返回

  210. }

  211. //INT0中断-由P3.2引脚产生

  212. void int_0() interrupt 0 using 0
  213. {
  214.     EA=0;        //关中断,保证原子操作

  215.     LedsOn();
  216.     EA=1;        //开中断

  217. }

  218. //INT1中断-由P3.3引脚产生

  219. void int_1() interrupt 2 using 1
  220. {
  221.     EA=0;        //关中断,保证原子操作

  222.     LedsOff();
  223.     EA=1;        //开中断

  224. }

源码如下:

 LED.rar   

阅读(754) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~