找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3317|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)怎么用按位與、或、異來(lái)控制流水燈從兩端流向中間?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:370709 發(fā)表于 2018-9-28 10:51 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
如題
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:403712 發(fā)表于 2018-9-28 17:50 | 只看該作者
TLOW    EQU  0F0H
THIGH   EQU  0D8H

FLAG_DIR    BIT 20H.0;FANGXIANG

COUNT_INT   DATA 30H
COUNT_K     DATA 31H
LEDVALUE    DATA 32H
COUNT_KEY   DATA 33H
KEY0    EQU P2.0
KEY1    EQU P2.1
KEY2    EQU P2.2
KEY3    EQU P2.3
;--------------------------------------------------
ORG  0000H
JMP  MAIN
ORG  0BH
JMP  T0_INT
;--------------------------------------------------
MAIN:
    MOV  SP,#60H
    CALL  INIT_TIMER
    SETB  TR0
    CLR FLAG_DIR
    MOV LEDVALUE,#01H
    MOV COUNT_KEY,#50
    MOV COUNT_K,#50
MAIN_LOOP:
READKEY0:
    JB KEY0,READKEY1
    JNB KEY0,$
    SETB FLAG_DIR
    AJMP READKEYEND
READKEY1:
    JB KEY1,READKEY2
    JNB KEY1,$
    CLR FLAG_DIR
    AJMP READKEYEND
READKEY2:
    JB KEY3,READKEY3
    JNB KEY3,$
    CLR C
    MOV A,COUNT_KEY
    ADDC A,#5
    JNC COUNT_KEY_NOT_OV
    MOV A,#250
COUNT_KEY_NOT_OV:   
    MOV COUNT_KEY,A
    MOV COUNT_K,A
    AJMP READKEYEND
READKEY3:
    JB KEY2,READKEYEND  
    JNB KEY2,$   
    MOV A,COUNT_KEY
    SUBB A,#5
    JNC COUNT_KEY_NOT_OV2
    MOV A,#5
COUNT_KEY_NOT_OV2:     
    MOV COUNT_KEY,A
    MOV COUNT_K,A
    AJMP READKEYEND
READKEYEND:   
;   MOV A,COUNT_KEY
;    MOV COUNT_K,A
    JMP MAIN_LOOP
;;-------------------------     


;;-------------------------
INIT_TIMER:                ;初始化定時(shí)器
    MOV  TMOD,#01H    ;設(shè)置定時(shí)器0 工作模式為模式1
    MOV  IE,  #82H    ;啟用定時(shí)器0 中斷產(chǎn)生
    MOV  TL0,#TLOW      ;10MS
    MOV  TH0,#THIGH
    RET
;;-------------------------
T0_INT:
    PUSH  ACC
    PUSH  PSW
    MOV  TL0,#TLOW
    MOV  TH0,#THIGH
    INC COUNT_INT
    MOV A,COUNT_INT
    CJNE A,#1,RUNOUT
    MOV COUNT_INT,#0
    DJNZ COUNT_K,RUNOUT
    MOV A,COUNT_KEY
    MOV COUNT_K,A
RUN:   
    JB  FLAG_DIR,RUN_R;
RUN_L:
    MOV A,LEDVALUE
    RL A
    MOV LEDVALUE,A
    AJMP RUNOUT
RUN_R:
    MOV A,LEDVALUE
    RR A
    MOV LEDVALUE,A
    AJMP RUNOUT  
RUNOUT:
;   MOV A,LEDVALUE
    MOV P0,LEDVALUE
T0_T:
    POP PSW
   POP  ACC
    RETI

;;-------------------------   
END
回復(fù)

使用道具 舉報(bào)

板凳
ID:111634 發(fā)表于 2018-9-30 06:50 | 只看該作者
用邏輯運(yùn)算實(shí)現(xiàn)花樣亮燈操作,不是好方法,且復(fù)雜單調(diào),應(yīng)采用數(shù)組調(diào)用方法,可做到隨心所欲。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
yousunny + 20 贊一個(gè)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

地板
ID:396960 發(fā)表于 2018-9-30 09:07 | 只看該作者
嗯嗯,贊成 “zl2168” 的說(shuō)話
“用邏輯運(yùn)算實(shí)現(xiàn)花樣亮燈操作,不是好方法,且復(fù)雜單調(diào),應(yīng)采用數(shù)組調(diào)用方法,可做到隨心所欲!

省心。
回復(fù)

使用道具 舉報(bào)

5#
ID:391338 發(fā)表于 2018-9-30 09:38 | 只看該作者
TLOW    EQU  0F0H THIGH   EQU  0D8H FLAG_DIR    BIT 20H.0;FANGXIANG COUNT_INT   DATA 30H COUNT_K     DATA 31H LEDVALUE    DATA 32H COUNT_KEY   DATA 33H KEY0    EQU P2.0 KEY1    EQU P2.1 KEY2    EQU P2.2 KEY3    EQU P2.3 ;-------------------------------------------------- ORG  0000H JMP  MAIN ORG  0BH JMP  T0_INT ;-------------------------------------------------- MAIN:     MOV  SP,#60H     CALL  INIT_TIMER     SETB  TR0     CLR FLAG_DIR     MOV LEDVALUE,#01H     MOV COUNT_KEY,#50     MOV COUNT_K,#50 MAIN_LOOP: READKEY0:     JB KEY0,READKEY1     JNB KEY0,$     SETB FLAG_DIR     AJMP READKEYEND READKEY1:     JB KEY1,READKEY2     JNB KEY1,$     CLR FLAG_DIR     AJMP READKEYEND READKEY2:     JB KEY3,READKEY3     JNB KEY3,$     CLR C     MOV A,COUNT_KEY     ADDC A,#5     JNC COUNT_KEY_NOT_OV     MOV A,#250 COUNT_KEY_NOT_OV:         MOV COUNT_KEY,A     MOV COUNT_K,A      AJMP READKEYEND READKEY3:     JB KEY2,READKEYEND       JNB KEY2,$         MOV A,COUNT_KEY     SUBB A,#5     JNC COUNT_KEY_NOT_OV2     MOV A,#5 COUNT_KEY_NOT_OV2:          MOV COUNT_KEY,A     MOV COUNT_K,A     AJMP READKEYEND READKEYEND:     ;   MOV A,COUNT_KEY ;    MOV COUNT_K,A     JMP MAIN_LOOP ;;-------------------------      ;;------------------------- INIT_TIMER:                ;初始化定時(shí)器     MOV  TMOD,#01H    ;設(shè)置定時(shí)器0 工作模式為模式1     MOV  IE,  #82H    ;啟用定時(shí)器0 中斷產(chǎn)生     MOV  TL0,#TLOW      ;10MS     MOV  TH0,#THIGH     RET ;;------------------------- T0_INT:     PUSH  ACC     PUSH  PSW     MOV  TL0,#TLOW     MOV  TH0,#THIGH     INC COUNT_INT     MOV A,COUNT_INT     CJNE A,#1,RUNOUT     MOV COUNT_INT,#0     DJNZ COUNT_K,RUNOUT     MOV A,COUNT_KEY     MOV COUNT_K,A RUN:        JB  FLAG_DIR,RUN_R; RUN_L:     MOV A,LEDVALUE     RL A     MOV LEDVALUE,A     AJMP RUNOUT RUN_R:     MOV A,LEDVALUE     RR A     MOV LEDVALUE,A     AJMP RUNOUT   RUNOUT: ;   MOV A,LEDVALUE     MOV P0,LEDVALUE T0_T:     POP PSW    POP  ACC     RETI ;;-------------------------     END
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表