找回密码
 立即注册

QQ登录

只需一步,快速开始

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

74HC164串-并芯片实验_C51与汇编2个版本

[复制链接]
跳转到指定楼层
楼主
ID:1 发表于 2010-7-3 22:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
;=======================================
;跳线设置:默认
;晶振:12M
;试验结果8*8点阵上出现流水灯
;74hc164芯片可实现串-并,所以常用他来扩展单片机io口,51hei板子上的8*8点阵有8行8列
;本来是需要8个io口来控制行数据的,现在我们用74hc164后只需要2个io口便能实现
;===========预定义======================
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        ;关数码管
mov ACC,#0FFH   ;送SHIFT子程序的参数
ACALL   SHIFT   ;调74hc164移位输出子程序,把FF输出到8*8点阵的所有行
                ;因51hei开发板采用共阳点阵,这时只要哪一列为0,这一列便可被点亮
mov dds,#0feH   ;二进制为11111110,供RL指令移位用
huqin:
mov P0,dds      ;输出到8*8点阵的列,每一次只有一列被点亮
mov  dds,P0     ;P0现在的值保存到48H里去   
mov a,dds       ;由于RAM中不能直接RL移位,所以先送人A
RL   a          ;移位
mov  dds,a      ;移位之后的数据保存到48H里去 
ACALL DELAY_1S  ;延时1.002035秒
jmp huqin       ;死循环

;============74hc164移位输出子程序==============================
; 子程序名: SHIFT
; 功能描述: 移位程序,将8位数据依次移进74LS164芯片中
; 控制方式就是数据引脚的数据在时钟引脚的脉冲下一位一位的移入芯片
; 程序作者: 胡琴  网站:www.51hei.com
;===============================================================
SHIFT:      push  ACC       ;A进栈暂存
            MOV     R2,#8   ;串输出数据8位 
            CLR     C       ;把C清0
hei:        CLR     SCL     ;拉低SCL,以便下次拉高便可产生上升沿
            RLC     A       ;A的最高位移到C,C原值移到A最低位
            MOV     SDA,C   ;C中的数据先送入74hc164,等待clk上升沿的到来
            SETB    SCL     ;低电平到高电平边沿触发到来,并行数据输出至164的Q0-Q7
            DJNZ    R2,hei  ;判断输出完毕了没有
            pop   ACC       ;出栈恢复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指令周期
;循环体延时时间: [(249*2+1+2)*200+1+2]*10*12/12000000=1.002030s
;加上ACALL指令和第一条mov指令以及最后一条RET指令算出来整个函数的时间为1.002035s
;===================================================
END                     ;汇编结束伪指令


 

 

c语言的版本由于分为几个文件不方便在论坛贴出,用户可从以下地址获得

源代码与hex文件下载:

汇编语言:http://www.51hei.com/ziliao/51hei-5/74HC164串-并_asm.rar

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

[此贴子已经被作者于2010-7-4 2:35:19编辑过]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:29773 发表于 2011-7-27 15:15 | 只看该作者
谢谢分停
回复

使用道具 举报

板凳
ID:31502 发表于 2011-9-24 01:11 | 只看该作者

顶,菜鸟学习中。。。

回复

使用道具 举报

地板
ID:31196 发表于 2011-9-28 10:04 | 只看该作者

哎!汇编用哪个软件写程序呀??只会用KEIL写C的,可是没学过C,学过汇编,却不知道用哪个软件写汇编!

回复

使用道具 举报

5#
ID:463930 发表于 2019-1-13 11:28 | 只看该作者
pjking1214 发表于 2011-9-28 10:04
哎!汇编用哪个软件写程序呀??只会用KEIL写C的,可是没学过C,学过汇编,却不知道用哪个软件写汇编!

Keil也是可以写汇编,只是你把文件保存时用.asm后缀,不要用.c,如果是.c后缀就是编写c语言,如果是.asm后缀就可以编写汇编
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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