?? xl232up.asm
字號(hào):
/********************************************************************************
* 標(biāo)題: xl系列單片機(jī)實(shí)驗(yàn)儀演示程序 電腦和單片機(jī)串口通信 *
* 文件: XL232UP.asm *
* 日期: 2006-1-5 *
* 版本: 3.0 (試驗(yàn)通過版)可用xl600-xl1000單片機(jī)綜合試驗(yàn)儀試驗(yàn) *
* 郵箱: sxj1974@163.com *
* 網(wǎng)站: http://www.51c51.com www.8951.com *
********************************************************************************
;* 描述: *
;* 單片機(jī)接收主機(jī)的數(shù)據(jù),然后將數(shù)據(jù)傳送到P0口, 并傳回給主機(jī); *
;* 當(dāng)按下K1時(shí), 單片機(jī)發(fā)送字串"welcome! www.51c51.com\n\r" 給主機(jī) *
;* 引用:p0口接8位指示燈 按鍵接p35 *
;* 注意:演示此程序需要配合串口調(diào)試軟件,且串口調(diào)試軟件與xlisp軟件不能同時(shí)打開。*
;* 串口調(diào)試軟件在光盤“工具軟件”目錄下有。 *
;* *
;* 方法:先用xlisp軟件將程序?qū)懭雴纹瑱C(jī),關(guān)閉xlisp軟件,將xl1000或xl600的串口切換*
;* 開關(guān)切換到仿真位置(這樣設(shè)置后計(jì)算機(jī)的串口才能與試驗(yàn)芯片串口通信)*
;* 最后運(yùn)行串口調(diào)試軟件即可實(shí)驗(yàn)。 (串口通信速度2400 *
********************************************************************************
* 【版權(quán)】 Copyright(C)深圳市學(xué)林電子有限公司 www.51c51.com *
* 【聲明】 此程序僅用于學(xué)習(xí)與參考,引用請(qǐng)注明版權(quán)和作者信息! *
* 【技術(shù)支持】請(qǐng)?jiān)L問http://www.51c51.com/bbs/index.asp 官方論壇 *
********************************************************************************/
K1 EQU P3.5 ; 按鍵端口
; 變量定義
KEY_S EQU 50H ; 當(dāng)前的按鍵狀態(tài)
KEY_V EQU 51H ; 上次的按鍵狀態(tài)
ORG 0000H
LJMP MAIN
MAIN:
MOV TMOD,#20H ; 定時(shí)器1工作于8位自動(dòng)重載模式,用于產(chǎn)生波特率
MOV TH1,#0F3H
MOV TL1,#0F3H ; 波特率2400
MOV SCON,#50H ; 設(shè)定串行口工作方式
ANL PCON,#0EFH ; 波特率不倍增
SETB TR1 ; 啟動(dòng)定時(shí)器1
MOV IE,#0 ; 禁止任何中斷
MOV KEY_V,#01H ;
MAIN_RX:
JNB RI,MAIN_KEY ; 是否有數(shù)據(jù)到來
CLR RI
MOV A,SBUF ; 暫存接收到的數(shù)據(jù)
MOV P0,A ; 數(shù)據(jù)傳送到P0口
LCALL SEND_CHAR ; 回傳接收到的數(shù)據(jù)
MAIN_KEY:
LCALL SCAN_KEY ; 掃描按鍵
JZ MAIN_RX
LCALL DELAY_15MS ; 延時(shí)去抖動(dòng)
LCALL SCAN_KEY
JZ MAIN_RX
MOV KEY_V,KEY_S ; 保存鍵值
LCALL PROC_KEY ; 鍵處理
SJMP MAIN_RX
;===============================================================================
SCAN_KEY:
; 掃描按鍵, (在此實(shí)例中僅掃描按鍵K1)
; 傳入?yún)?shù): 無
; 返回值: 無
CLR A
MOV C,K1
MOV ACC.0, C
MOV KEY_S,A
XRL A,KEY_V ; 檢查按鍵狀態(tài)是否改變
RET
;===============================================================================
PROC_KEY:
; 按鍵處理子程序 --- 發(fā)送字符串到PC
; 傳入?yún)?shù): KEY_V --- 按鍵值
; 返回值: 無
JB K1,END_PROC_KEY ; K1未按下時(shí),直接返回
MOV DPTR,#TAB_WWW ; 字串表格地址
SEND_STRING:
CLR A
MOVC A,@A+DPTR
JZ END_PROC_KEY ; 查到00H時(shí),表示字串結(jié)束
ACALL SEND_CHAR
INC DPTR ; 下一字符
SJMP SEND_STRING
END_PROC_KEY:
RET
;===============================================================================
SEND_CHAR:
; 傳送一個(gè)字符
; 傳入?yún)?shù): ACC(要發(fā)送的數(shù)據(jù))
; 返回值: 無
MOV SBUF,A
JNB TI,$ ; 等特?cái)?shù)據(jù)傳送
CLR TI ; 清除數(shù)據(jù)傳送標(biāo)志
RET
;===============================================================================
; 掃描按鍵, (在此實(shí)例中僅掃描按鍵K1)
; 傳入?yún)?shù): 無
; 返回值: 無
DELAY_15MS:
MOV R7,#15
DELAY15MS_1:
MOV R6,#0E8H
DELAY15MS_2:
NOP
NOP
DJNZ R6,DELAY15MS_2
DJNZ R7,DELAY15MS_1
RET
TAB_WWW:
DB "welcome! www.51c51.com"
DB 0AH,0DH ;換行/回車
DB 00H
END
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -