找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8530|回复: 0
打印 上一主题 下一主题
收起左侧

一个单片机定时器控制流水灯小程序

[复制链接]
跳转到指定楼层
#
ID:419790 发表于 2018-11-2 17:42 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
新人报到!
前段时间自己写了这个小程序,也不知算不算入门,欢迎各位大佬指正。

单片机源程序如下:
  1.          #include <reg51.h>
  2.                                  #include "intrins.h"
  3.          #include "common.h"
  4.                                  
  5.                                  #define FOSC 11059200ul
  6.          #define T0_H (65536-(50*FOSC)/(12*1000))/256
  7.          #define T0_L (65536-(50*FOSC)/(12*1000))%256
  8.                  uint16_t i = 0;
  9.                        uint16_t i1 = 0;
  10.                                          uint16_t i2 = 0;
  11.                                           uint16_t i3 = 0;
  12.                                         bit ayan = 0;
  13.                                         bit byan = 0;
  14.                                         bit cyan = 0;
  15.                  sbit LED0 = P2^3;
  16.                  sbit LED1 = P2^4;
  17.                  sbit LED2 = P2^5;
  18.                  sbit LED3 = P1^0;
  19.                  sbit LED4 = P1^1;
  20.                  sbit LED5 = P1^2;
  21.                  sbit LED6 = P1^3;
  22.                  sbit LED7 = P1^4;
  23.                  sbit LED8 = P1^5;
  24.                  sbit LED9 = P1^6;
  25.                  sbit LED10 = P1^7;
  26.                  sbit KEY1 = P2^0;
  27.                  sbit KEY2 = P2^1;
  28.                  uint16_t t=1;
  29.                  uint16_t t1=0;

  30.                  void delay_ms(uint16_t dly);
  31.                  void time();
  32.                  
  33.                  void main()
  34.                  {  
  35.                                 P1 = 0xfe;
  36.                                 time();       
  37.                                 while(1)
  38.                     {
  39.                                                 if(t1==0)
  40.                                                 {
  41.                                                                  delay_ms(1000);     
  42.                                                                  P1 = _crol_(P1,1);      
  43.                                                 }
  44.                         if(KEY1 == 0)
  45.                                                         {
  46.                                                             delay_ms(10);
  47.                                                                         while(!KEY1);
  48.                                                                         t=!t;
  49.               }
  50.                                                 if(t==0)
  51.                                                 {       
  52.                                                                 if(ayan)
  53.                                                                 {       
  54.                                                                                 ayan = 0;       
  55.                                                                                 LED0 = !LED0;
  56.                                                                 }
  57.                                                                 if(byan)
  58.                                                                 {
  59.                                                                                 byan = 0;
  60.                                                                                 LED1 = !LED1;
  61.                                                                 }
  62.                                                                 if(cyan)
  63.                                                                 {
  64.                                                                                 cyan = 0;
  65.                                                                                 LED2 = !LED2;
  66.                                                                 }
  67.                                                 }

  68.                                                 if (t == 1)
  69.                                                 {
  70.                                                                 LED0 = 1;
  71.                                                                 LED1 = 1;
  72.                                                                 LED2 = 1;
  73.                                                 }                       
  74.                                        
  75.                                                 if(!KEY2)
  76.                                                 {
  77.                                                                 delay_ms(10);
  78.                                                                 while(!KEY2);                                                       
  79.                                                                 t1=!t1;
  80.                                                 }
  81.                                                 if(t1== 1)
  82.                                                 {
  83.                                                                 delay_ms(1000);
  84.                                                                 P1 = _cror_(P1,1);               
  85.                                                 }
  86.                         }
  87.                 }
  88.                        
  89.                                 void time(){
  90.                                                 TMOD=0x01;                                                                           
  91.             TH0=T0_H;
  92.             TL0=T0_L;
  93.             EA=1;
  94.             ET0=1;
  95.             TR0=1;
  96.                                 }                                       
  97.                                        
  98.                                 void timer0() interrupt 1 {
  99.            TH0 = T0_H;
  100.            TL0 = T0_L;
  101.                                          if(++i1 >=10){
  102.                                                  i1 = 0;
  103.                                                   ayan = 1;
  104.                                          }
  105.                                        
  106.                                          if(++i2 >= 20){
  107.                                                  i2=0;
  108.                                                   byan = 1;
  109.                                          }
  110.                                          
  111.                                          if(++i3 >= 100){
  112.                                                  i3=0;
  113.                                                   cyan = 1;
  114.                                          }
  115.                                  }
  116.                        
  117.                  
  118.                         void delay_ms(uint16_t dly){
  119.           uint8_t i;
  120.           while(dly--)
  121.           for(i = 110; i > 0; i--);
  122. }       
  123.                  
  124.                      
复制代码

所有资料51hei提供下载:
定时器流水灯小程序.zip (5.13 KB, 下载次数: 16)



评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表