找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 9526|回復(fù): 4
收起左側(cè)

74HC164串-并芯片實(shí)驗(yàn)_C51與匯編2個版本

[復(fù)制鏈接]
ID:1 發(fā)表于 2010-7-3 22:14 | 顯示全部樓層 |閱讀模式
;=======================================
;跳線設(shè)置:默認(rèn)
;晶振:12M
;試驗(yàn)結(jié)果8*8點(diǎn)陣上出現(xiàn)流水燈
;74hc164芯片可實(shí)現(xiàn)串-并,所以常用他來擴(kuò)展單片機(jī)io口,51hei板子上的8*8點(diǎn)陣有8行8列
;本來是需要8個io口來控制行數(shù)據(jù)的,現(xiàn)在我們用74hc164后只需要2個io口便能實(shí)現(xiàn)
;===========預(yù)定義======================
SDA        BIT   P2.5 ;74HC164的AB端串行輸入
SCL        BIT   P2.4 ;74HC164的CLK端,上升沿有效
dds        EQU   48H   
ORG   0000H
AJMP  MAIN
ORG   0100H
;============主程序開始=======================
MAIN:  
clr P2.7        ;關(guān)數(shù)碼管
mov ACC,#0FFH   ;送SHIFT子程序的參數(shù)
ACALL   SHIFT   ;調(diào)74hc164移位輸出子程序,把FF輸出到8*8點(diǎn)陣的所有行
                ;因51hei開發(fā)板采用共陽點(diǎn)陣,這時只要哪一列為0,這一列便可被點(diǎn)亮
mov dds,#0feH   ;二進(jìn)制為11111110,供RL指令移位用
huqin:
mov P0,dds      ;輸出到8*8點(diǎn)陣的列,每一次只有一列被點(diǎn)亮
mov  dds,P0     ;P0現(xiàn)在的值保存到48H里去   
mov a,dds       ;由于RAM中不能直接RL移位,所以先送人A
RL   a          ;移位
mov  dds,a      ;移位之后的數(shù)據(jù)保存到48H里去 
ACALL DELAY_1S  ;延時1.002035秒
jmp huqin       ;死循環(huán)

;============74hc164移位輸出子程序==============================
; 子程序名: SHIFT
; 功能描述: 移位程序,將8位數(shù)據(jù)依次移進(jìn)74LS164芯片中
; 控制方式就是數(shù)據(jù)引腳的數(shù)據(jù)在時鐘引腳的脈沖下一位一位的移入芯片
; 程序作者: 胡琴  網(wǎng)站:www.torrancerestoration.com
;===============================================================
SHIFT:      push  ACC       ;A進(jìn)棧暫存
            MOV     R2,#8   ;串輸出數(shù)據(jù)8位 
            CLR     C       ;把C清0
hei:        CLR     SCL     ;拉低SCL,以便下次拉高便可產(chǎn)生上升沿
            RLC     A       ;A的最高位移到C,C原值移到A最低位
            MOV     SDA,C   ;C中的數(shù)據(jù)先送入74hc164,等待clk上升沿的到來
            SETB    SCL     ;低電平到高電平邊沿觸發(fā)到來,并行數(shù)據(jù)輸出至164的Q0-Q7
            DJNZ    R2,hei  ;判斷輸出完畢了沒有
            pop   ACC       ;出�;謴�(fù)A值
            RET

;============延時子程序=============
DELAY_1S:         ;延時子程序,12M晶振延時1.002035秒
MOV R4,#10 
L3: MOV R2 ,#200  ;1指令周期
L1: MOV R3 ,#249  ;1指令周期
L2: DJNZ R3 ,L2   ;2指令周期
DJNZ R2 ,L1       ;2指令周期
DJNZ R4 ,L3       ;2指令周期
RET               ;2指令周期
;循環(huán)體延時時間: [(249*2+1+2)*200+1+2]*10*12/12000000=1.002030s
;加上ACALL指令和第一條mov指令以及最后一條RET指令算出來整個函數(shù)的時間為1.002035s
;===================================================
END                     ;匯編結(jié)束偽指令


 

 

c語言的版本由于分為幾個文件不方便在論壇貼出,用戶可從以下地址獲得

源代碼與hex文件下載:

匯編語言:http://www.torrancerestoration.com/ziliao/51hei-5/74HC164串-并_asm.rar

  C 語言:http://www.torrancerestoration.com/ziliao/51hei-5/74HC164串-并_c.rar

[此貼子已經(jīng)被作者于2010-7-4 2:35:19編輯過]
回復(fù)

使用道具 舉報(bào)

ID:29773 發(fā)表于 2011-7-27 15:15 | 顯示全部樓層
謝謝分停
回復(fù)

使用道具 舉報(bào)

ID:31502 發(fā)表于 2011-9-24 01:11 | 顯示全部樓層

頂,菜鳥學(xué)習(xí)中。。。

回復(fù)

使用道具 舉報(bào)

ID:31196 發(fā)表于 2011-9-28 10:04 | 顯示全部樓層

哎!匯編用哪個軟件寫程序呀??只會用KEIL寫C的,可是沒學(xué)過C,學(xué)過匯編,卻不知道用哪個軟件寫匯編!

回復(fù)

使用道具 舉報(bào)

ID:463930 發(fā)表于 2019-1-13 11:28 | 顯示全部樓層
pjking1214 發(fā)表于 2011-9-28 10:04
哎!匯編用哪個軟件寫程序呀??只會用KEIL寫C的,可是沒學(xué)過C,學(xué)過匯編,卻不知道用哪個軟件寫匯編!

Keil也是可以寫匯編,只是你把文件保存時用.asm后綴,不要用.c,如果是.c后綴就是編寫c語言,如果是.asm后綴就可以編寫匯編
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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