📄 16c54.lst
字号:
MPASM 02.50.02 Intermediate 16C54.ASM 7-1-2001 11:47:32 PAGE 1
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00001 ;************************************************
00002 ;* http://www.sl.com.cn *
00003 ;* SL279测试/演示程序 *
00004 ;* 此程序为PIC16C54单片机与SL279的接口演示程序 *
00005 ;* 程序作者:詹卫前 *
00006 ;* SL279 晶振频率12MHZ PIC16C54晶振频率4MHZ *
00007 ;************************************************
00008 TITLE "SL279 测试"
00009 LIST P=16C54
00010 INCLUDE P16C5X.INC
00001 LIST
00002 ; P16C5X.INC Standard Header File, Version 4.00 Microchip Technology, Inc.
00313 LIST
00011
00000007 00012 BIT_COUNT SET 0x07
00000008 00013 DATA_OUT SET 0x08
00000009 00014 DATA_IN SET 0x09
0000000A 00015 TEN SET 0x0A
0000000B 00016 TIMER SET 0X0B
0000000C 00017 TIMER1 SET 0X0C
00018
00000000 00019 CS EQU 0 ;CS连接于16C54的RA0
00000001 00020 CLK EQU 1 ;CLK连接于16C54的RA1
00000002 00021 DAT EQU 2 ;DAT连接于16C54的RA2
00000003 00022 KEY EQU 3 ;KEY连接于16C54的RA3
00023
01FF 00024 ORG 0X1FF
01FF 0A2E 00025 GOTO START
00026
0000 00027 ORG 0
00028
00029 ;***************************************
00030 ; 延时子程序
00031 ;***************************************
0000 0C1D 00032 LONG_DELAY MOVLW D'29' ;设定延时时间为约90uS
0001 002B 00033 MOVWF TIMER
0002 02EB 00034 DELAY_LOOP DECFSZ TIMER,1
0003 0A02 00035 GOTO DELAY_LOOP
0004 0800 00036 RETLW 0
00037
0005 0C02 00038 SHORT_DELAY MOVLW D'2' ;设定延时时间约为10uS
0006 002B 00039 MOVWF TIMER
0007 02EB 00040 SHORT_LP DECFSZ TIMER,1
0008 0A07 00041 GOTO SHORT_LP
0009 0800 00042 RETLW 0
00043
00044 ;***************************************
00045 ; 发送1个字节到SL279,高位在前
00046 ;***************************************
000A 0028 00047 SEND MOVWF DATA_OUT ;待发送数据送入DATA_OUT
000B 0C08 00048 MOVLW D'8'
000C 0027 00049 MOVWF BIT_COUNT ;设定位计数器=8
000D 0405 00050 BCF PORTA,CS ;设CS为低电平
MPASM 02.50.02 Intermediate 16C54.ASM 7-1-2001 11:47:32 PAGE 2
SL279 测试
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
000E 0900 00051 CALL LONG_DELAY ;长延时
000F 0403 00052 SEND_LOOP BCF STATUS,C
0010 0368 00053 RLF DATA_OUT,1 ;输出1位
0011 0445 00054 BCF PORTA,DAT
0012 0603 00055 BTFSC STATUS,C
0013 0545 00056 BSF PORTA,DAT
0014 0525 00057 BSF PORTA,CLK ;设CLK为高电平
0015 0905 00058 CALL SHORT_DELAY ;短延时
0016 0425 00059 BCF PORTA,CLK ;设CLK为低电平
0017 0905 00060 CALL SHORT_DELAY
0018 02E7 00061 DECFSZ BIT_COUNT,1 ;检查是否8位均发送完毕
0019 0A0F 00062 GOTO SEND_LOOP ;未发送完,发送下一位
001A 0445 00063 BCF PORTA,DAT
001B 0800 00064 RETLW 0
00065
00066 ;**************************************
00067 ; 从SL279接收1个字节,高位在前
00068 ;**************************************
001C 0C08 00069 RECEIVE MOVLW D'8'
001D 0027 00070 MOVWF BIT_COUNT ;设定位计数器=8
001E 0CFC 00071 MOVLW B'11111100' ;设RA2(DATA)口为输入状态
001F 0005 00072 TRIS PORTA
0020 0900 00073 CALL LONG_DELAY ;长延时
0021 0525 00074 RECEIVE_LOOP BSF PORTA,CLK ;置CLK为高电平
0022 0905 00075 CALL SHORT_DELAY ;短延时
0023 0503 00076 BSF STATUS,C
0024 0745 00077 BTFSS PORTA,DAT
0025 0403 00078 BCF STATUS,C
0026 0369 00079 RLF DATA_IN,1 ;读取1位数据
0027 0425 00080 BCF PORTA,CLK ;设CLK为低电平
0028 0905 00081 CALL SHORT_DELAY
0029 02E7 00082 DECFSZ BIT_COUNT,1 ;检查是否已接收8位数据
002A 0A21 00083 GOTO RECEIVE_LOOP
002B 0CF8 00084 MOVLW B'11111000'
002C 0005 00085 TRIS PORTA ;重设RA2(DATA)为输出态
002D 0800 00086 RETLW 0
00087
00088
00089 ;*******************************************
00090 ; 初始化
00091 ;*******************************************
002E 0CF8 00092 START MOVLW B'11111000' ;I/O口初始化
002F 0005 00093 TRIS PORTA
0030 0CF9 00094 MOVLW B'11111001'
0031 0025 00095 MOVWF PORTA
0032 0C30 00096 MOVLW 0X30 ;延时约30MS
0033 002B 00097 MOVWF TIMER
0034 0CFF 00098 START_DELAY MOVLW 0XFF
0035 002C 00099 MOVWF TIMER1
0036 02EC 00100 START_DELAY1 DECFSZ TIMER1,1
0037 0A36 00101 GOTO START_DELAY1
0038 02EB 00102 DECFSZ TIMER,1
0039 0A34 00103 GOTO START_DELAY
MPASM 02.50.02 Intermediate 16C54.ASM 7-1-2001 11:47:32 PAGE 3
SL279 测试
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
003A 0CBF 00104 MOVLW B'10111111' ;TEST
003B 0405 00105 BCF PORTA,CS
003C 090A 00106 CALL SEND
003D 0505 00107 BSF PORTA,CS
003E 0C20 00108 MOVLW 0X20
003F 002A 00109 MOVWF TEN
0040 0CFF 00110 LP MOVLW 0XFF ;延时约3S
0041 002B 00111 MOVWF TIMER
0042 0CFF 00112 STARTDELAY MOVLW 0XFF
0043 002C 00113 MOVWF TIMER1
0044 02EC 00114 STARTDELAY1 DECFSZ TIMER1,1
0045 0A44 00115 GOTO STARTDELAY1
0046 02EB 00116 DECFSZ TIMER,1
0047 0A42 00117 GOTO STARTDELAY
0048 02EA 00118 DECFSZ TEN,1
0049 0A40 00119 GOTO LP
004A 0CA4 00120 MOVLW B'10100100' ;发复位(清除)指令
004B 0405 00121 BCF PORTA,CS
004C 090A 00122 CALL SEND
004D 0505 00123 BSF PORTA,CS ;恢复CS为高电平
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -