久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 本人寫的單片機左移到頭接著右移,右移到頭再左移的花樣流水燈程序,求大師指點疑問 [打印本頁]

作者: zhhdok    時間: 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;
            }
        }
    }
}



作者: xuyaqi    時間: 2019-2-10 10:17
差別在于沒改前,每執行一次P1= --- 后都有 delay(100);延時;改了后,P1=~(0x01<<k);后有延時,P1=~(0x80>>m);后就沒了延時。
作者: 就你****    時間: 2019-2-10 10:43
自己再調調看,太基礎的東西
作者: 熇熇熇    時間: 2019-2-10 17:14
改了之后,當執行過P1=~(0x80>>m);之后,程序回到死循環開始,會執行先P1=~(0x01<<k);這相當于沒有進行延時就又把P1口的信號改變了
作者: wulin    時間: 2019-2-11 15:56
//利用循環左移和循環右移函數完成的花樣流水燈程序
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
//uint i,j,k,ms,m;//定義變量
uchar num;
void delay(uint ms)//延時函數
{
        uint i,j;
        for(i=ms;i>0;i--)
            for(j=110;j>0;j--);
}
void main() //主函數
{
        num=1;
        P1=0xfe;
        delay(500);
        while(1)//死循環
        {       
                if(num==1)
                {
                        P1=_crol_(P1,1);//循環左移
                        delay(500);
                        if(P1==0x7f)
                                num=0;
                }
                else
                {
                        P1=_cror_(P1,1);//循環右移
                        delay(500);
                        if(P1==0xfe)
                                num=1;
                }
        }
}
作者: sheng7533967    時間: 2019-2-12 01:29

當執行過P1=~(0x80>>m);之后,程序回到死循環開始,會執行先P1=~(0x01<<k);這相當于沒有進行延時就又把P1口的信號改變了
作者: zhhdok    時間: 2019-2-13 15:58
wulin 發表于 2019-2-11 15:56
//利用循環左移和循環右移函數完成的花樣流水燈程序
#include
#include

這個程序比我的要完美,我的那個程序運行一個來回要停頓一小會雖然時間很短但是看著總有些別扭,這個很連續,再弱弱的問一哈#include <intrins.h>這個頭文件是干嘛用的
作者: zhhdok    時間: 2019-2-13 15:58
xuyaqi 發表于 2019-2-10 10:17
差別在于沒改前,每執行一次P1= --- 后都有 delay(100);延時;改了后,P1=~(0x01m);后就沒了延時。

感謝啦
作者: wulin    時間: 2019-2-13 17:56
zhhdok 發表于 2019-2-13 15:58
這個程序比我的要完美,我的那個程序運行一個來回要停頓一小會雖然時間很短但是看著總有些別扭,這個很連 ...

#include <intrins.h>這個頭文件包含循環左移和循環右移函數,不用自己寫了。
/*--------------------------------------------------------------------------
INTRINS.H

Intrinsic functions for C51.
Copyright (c) 1988-2001 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/

extern void          _nop_     (void);
extern bit           _testbit_ (bit);
extern unsigned char _cror_    (unsigned char, unsigned char);
extern unsigned int  _iror_    (unsigned int,  unsigned char);
extern unsigned long _lror_    (unsigned long, unsigned char);
extern unsigned char _crol_    (unsigned char, unsigned char);
extern unsigned int  _irol_    (unsigned int,  unsigned char);
extern unsigned long _lrol_    (unsigned long, unsigned char);
extern unsigned char _chkfloat_(float);
作者: 406443550    時間: 2019-2-14 11:30
這個程序有問題,左移的操作一直在執行,不管你的k>=8的時候;全亮就是因為delay(100)停頓下,讓你看到了1左移了9位,那么P1=0了,當然全亮
作者: iofree    時間: 2019-2-16 16:24
zhhdok 發表于 2019-2-13 15:58
這個程序比我的要完美,我的那個程序運行一個來回要停頓一小會雖然時間很短但是看著總有些別扭,這個很連 ...

intrins.h包含幾個很有用的KEILC內部函數,有點匯編語言的意思:
_crol_ 字符循環左移
_cror_ 字符循環右移
_irol_ 整數循環左移
_iror_ 整數循環右移
_lrol_ 長整數循環左移
_lror_ 長整數循環右移
_nop_ 空操作 (相當于8051 NOP 指令)
_testbit_ 測試并清零位 (相當于8051 JBC 指令)




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: www.成人免费视频 | 性色av网站 | av在线一区二区三区 | 美女久久| 久久人人网 | av性色| 91精品国产一区二区三区 | 国产精品资源在线 | 欧美一区二区三区在线播放 | 波多野吉衣久久 | 日本精品久久久久 | 亚洲日本视频 | 日日草夜夜草 | 99福利视频| 成人在线视频看看 | 国产精品欧美一区二区三区不卡 | 久久久91精品国产一区二区三区 | 久草精品视频 | 日韩一区二区在线视频 | 91久久| 99精品欧美一区二区三区综合在线 | 成人欧美 | 国产成人精品一区二区三区网站观看 | 成人免费黄色 | 国产精品国产三级国产aⅴ中文 | 中文字幕一区二区三区精彩视频 | 99久久婷婷国产综合精品电影 | 久热国产在线 | 亚洲精品久久久一区二区三区 | 国产999精品久久久久久 | 超碰网址 | 国产亚洲精品久久久久动 | 国产精品色哟哟网站 | 九九在线视频 | 国内精品久久精品 | 中文字幕第一页在线 | 在线精品亚洲欧美日韩国产 | 国产99视频精品免视看9 | www日本在线| 日韩国产一区二区三区 | 三级黄色片在线播放 |