本帖最后由 xawanggang78 于 2010-10-3 22:50 编辑
;* 1. 通过本例程了解74HC165(并入串出) 的基本原理和使用 *
;* 2.了解掌握SPI总线接口的工作原理及一般编程方法。 *
;* 3. 懂的74HC165在汇编语言中是如何操作 *
;* *
;*******************************************************************************/
;================================================
IN_Dat EQU P1.7 ;数据输出 数据通过P1.7脚移进单片机内处理
IN_PL EQU P1.6 ;锁存器控制脉冲 74HC165 shift load 把数据加载到锁存器中
CLK EQU P3.6 ;移位时钟脉冲
Relay EQU P1.4
Beep EQU P1.5
;================================================
ORG 0000H
LJMP MAIN
ORG 0030H
;================================================
MAIN:
CALL IN_165 ; 调用165子程序
MOV P2,#0FFH
SETB Relay
MOV R3 , A ;累加器中值暂存R3
ANL A , #01H
CJNE A , #01H , K2
CLR Relay ;打开继电器
CLR P2.7 ;打开LED灯
K2:
MOV A ,R3
ANL A , #02H ;屏蔽第二位
CJNE A , #02H , K3
CLR P2.6
CALL BEEP_B ;调用蜂鸣器发声
K3: MOV A ,R3
ANL A , #04H ;屏蔽第三位
CJNE A , #04H , K4 ;相等则顺序执行
CLR P2.5
CALL BEEP_B ;调用蜂鸣器发声
K4: MOV A ,R3
ANL A , #08H ;屏蔽第四位
CJNE A , #08H , K5
CLR P2.4
CALL BEEP_B ;调用蜂鸣器发声
K5: MOV A ,R3
ANL A , #10H
CJNE A , #10H , K6
CLR P2.3
CALL BEEP_B
K6: MOV A ,R3
ANL A , #20H
CJNE A , #20H , K7 ;相等则顺序执行
CLR P2.2
CALL BEEP_B
K7: MOV A ,R3
ANL A , #40H
CJNE A , #40H , K8
CLR P2.1
CALL BEEP_B
K8: MOV A ,R3
ANL A , #80H
CJNE A , #80H , LABLE1
CLR P2.0
CALL BEEP_B
LABLE1:
JMP MAIN
;---------------------------------------------------------------
;输入锁存器子程序165 (SPI驱动程序)
;---------------------------------------------------------------
IN_165:
CLR IN_PL
NOP ;用NOP指令产生方波
NOP
SETB IN_PL ;下降沿将数据送到输出锁存器
NOP
LCALL R_165
CPL A
RET
;--------------------------------------------------------------
;移位寄存器移出数据子程序
;--------------------------------------------------------------
R_165:
MOV R4,#08H ;总共移8次
MOV A,#00H
R_LOOP:
RL A ;左移
JNB IN_Dat ,Lab
ADD A , #01H
Lab: SETB CLK ;上升沿发生移位
NOP
NOP
CLR CLK
DJNZ R4,R_LOOP
RET
;--------------------------------------------------------
;蜂鸣器(让蜂鸣器发出动听声音)
;--------------------------------------------------------
BEEP_B:
MOV R6,#2
BL1: CALL DEX1
CPL Beep
DJNZ R6,BL1
RET
DEX1: MOV R7,#255
DEX2: NOP
DJNZ R7,DEX2
RET
;-----------------------------------------------------
END |