找回密码
 立即注册

QQ登录

只需一步,快速开始

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

本人写的单片机左移到头接着右移,右移到头再左移的花样流水灯程序,求大师指点疑问

  [复制链接]
跳转到指定楼层
楼主
ID:467178 发表于 2019-2-9 20:19 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本人纯属自学单片机一下程序是我自己写
写了一个左移到头接着右移,右移到头再左移的花样流水灯程序
以下程序运行完好,但是如果把此句”delay(100);“延时函数放在P1=~(0x01<<k);的后边然后烧到板子上8个led灯从右移动到左第八位全亮,但是从左移动到右就好像哪种电流很小的样子led等很暗很暗,这是为什么?
板子是郭天祥的TX1C
我的程序哪里有错误请高手指点或者还有什么更简洁的方法?

单片机源码如下:
----------------------------------------------------------------------
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
uint i,j,k,ms,m;//定义变量
void delay(ms)//延时函数
{
for(i=ms;i>0;i--)
    for(j=110;j>0;j--);
}
void main() //主函数
{
    while(1)//死循环
    {

    delay(100);//调用延时函数并赋值100
    P1=~(0x01<<k);//P1口赋初值0x01左移k位
    k++;    //k值自加1
    if(k>=8) //如果左移程序中k值大于等于8则运行右移程序,如果右移程
                //序中的m值大于等于8则k,m值归0.
        {
        P1=~(0x80>>m);
            m++;        
        if(m>=8)
            {
                k=0;
                m=0;
            }
        }
    }
}


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

使用道具 举报

沙发
ID:467178 发表于 2019-2-13 15:58 | 显示全部楼层
wulin 发表于 2019-2-11 15:56
//利用循环左移和循环右移函数完成的花样流水灯程序
#include
#include

这个程序比我的要完美,我的那个程序运行一个来回要停顿一小会虽然时间很短但是看着总有些别扭,这个很连续,再弱弱的问一哈#include <intrins.h>这个头文件是干嘛用的
回复

使用道具 举报

板凳
ID:467178 发表于 2019-2-13 15:58 | 显示全部楼层
xuyaqi 发表于 2019-2-10 10:17
差别在于没改前,每执行一次P1= --- 后都有 delay(100);延时;改了后,P1=~(0x01m);后就没了延时。

感谢啦
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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