資料介紹
1、串口COM通信實驗程序
#include#include
unsigned char key_s, key_v, tmp;
char code str[] = "www.pp51.com";
void send_str();
bit?scan_key();
void proc_key();
void delayms(unsigned char ms);
void send_char(unsigned char txd);
sbit?K1 = P1^4;
main()
{
?TMOD = 0x20;???// 定時器1工作于8位自動重載模式, 用于產生波特率
?TH1 = 0xFD;????// 波特率9600
?TL1 = 0xFD;
?
?SCON = 0x50;???// 設定串行口工作方式
?PCON &= 0xef;???// 波特率不倍增
??
?TR1 = 1;????// 啟動定時器1
?IE = 0x0;????// 禁止任何中斷
?
?while(1)
?{
??if(scan_key())??// 掃描按鍵
??{
???delayms(10);???// 延時去抖動
???if(scan_key())???// 再次掃描
???{
????key_v = key_s;??// 保存鍵值
????proc_key();???// 鍵處理
???}
??}
??if(RI)??????// 是否有數據到來
??{
???RI = 0;
???tmp = SBUF;????// 暫存接收到的數據
???P0 = tmp;????// 數據傳送到P0口
???send_char(tmp);???// 回傳接收到的數據
??}??
?}
}
bit scan_key()?
// 掃描按鍵
{
?key_s = 0x00;
?key_s |= K1;
?return(key_s ^ key_v);?
}
void proc_key()
// 鍵處理
{
?if((key_v & 0x01) == 0)
?{???// K1按下
??send_str();????// 傳送字串"welcome!...
?}
}
void send_char(unsigned char txd)
// 傳送一個字符
{
?SBUF = txd;
?while(!TI);????// 等特數據傳送
?TI = 0;?????// 清除數據傳送標志
}
void send_str()
// 傳送字串
{
?unsigned char i = 0;
?while(str[i] != '\0')
?{
??SBUF = str[i];
??while(!TI);????// 等特數據傳送
??TI = 0;?????// 清除數據傳送標志
??i++;?????// 下一個字符
?}?
}
void delayms(unsigned char ms)?
// 延時子程序
{??????
?unsigned char i;
?while(ms--)
?{
??for(i = 0; i < 120; i++);
?}
}
?
?
2、串口COM通訊(匯編語言)
K1?EQU?P1.4???; 按鍵端口
; 變量定義
KEY_S?EQU?50H???; 當前的按鍵狀態???
KEY_V?EQU?51H???; 上次的按鍵狀態
?ORG?0000H
?LJMP?MAIN
?
MAIN:
?MOV?TMOD,#20H??; 定時器1工作于8位自動重載模式,用于產生波特率
?MOV?TH1,#0FDH
?MOV?TL1,#0FDH??; 波特率9600
?
?MOV?SCON,#50H??; 設定串行口工作方式
?ANL?PCON,#0EFH??; 波特率不倍增
?
?SETB?TR1???; 啟動定時器1
?MOV?IE,#0???; 禁止任何中斷
?MOV?KEY_V,#01H??;?
?
MAIN_RX:
?JNB?RI,MAIN_KEY??; 是否有數據到來
?CLR?RI
?MOV?A,SBUF???; 暫存接收到的數據
?MOV?P0,A???; 數據傳送到P0口
?LCALL?SEND_CHAR??; 回傳接收到的數據
?
MAIN_KEY:
?LCALL?SCAN_KEY??;? 掃描按鍵
?JZ?MAIN_RX
?LCALL?DELAY_15MS??;? 延時去抖動
?LCALL?SCAN_KEY
?JZ?MAIN_RX
?MOV?KEY_V,KEY_S??;? 保存鍵值
?LCALL?PROC_KEY??; 鍵處理
?SJMP?MAIN_RX
;===============================================================================
SCAN_KEY:
; 掃描按鍵, (在此實例中僅掃描按鍵K1)?
; 傳入參數: 無
; 返回值: 無
?CLR?A
?MOV?C,K1
?MOV?ACC.0, C
?MOV?KEY_S,A
?XRL?A,KEY_V???; 檢查按鍵狀態是否改變
?RET
;===============================================================================?
PROC_KEY:
; 按鍵處理子程序 --- 發送字符串到PC
; 傳入參數: KEY_V --- 按鍵值
; 返回值: 無?
?JB?K1,END_PROC_KEY?; K1未按下時,直接返回
?MOV?DPTR,#TAB_WWW??; 字串表格地址
SEND_STRING:
?CLR?A
?MOVC?A,@A+DPTR
?JZ?END_PROC_KEY??; 查到00H時,表示字串結束
?ACALL?SEND_CHAR
?INC?DPTR???; 下一字符
?SJMP?SEND_STRING
END_PROC_KEY:
?RET?
;===============================================================================
SEND_CHAR:
; 傳送一個字符
; 傳入參數: ACC(要發送的數據)
; 返回值: 無
?MOV?SBUF,A
?JNB?TI,$???; 等特數據傳送
?CLR?TI???; 清除數據傳送標志
?RET
;===============================================================================
; 掃描按鍵, (在此實例中僅掃描按鍵K1)?
; 傳入參數: 無
; 返回值: 無
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?"www.pp51.com"
?DB?0AH,0DH??;換行/回車
?DB?00H
?END
?
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 基于89C51單片機的舵機按鍵控制程序源程序 3次下載
- 基于89C52單片機的洗衣機控制程序及proteus模擬
- 51單片機ADC控制程序
- 基于單片機的pid控制程序簡介 53次下載
- 如何使用51單片機進行簡單的交通燈控制程序資料說明
- 單片機入門匯編程序之直流電機的單片機控制程序資料免費下載 21次下載
- 單片機入門程序之直流電機的控制程序資料免費下載 21次下載
- 單片機按鍵控制程序【C語言+匯編版】 0次下載
- 基于單片機的中斷控制程序(INT0+INT1)【C語言】 23次下載
- 基于單片機的中斷控制程序(timer0)【C語言版】 0次下載
- 基于單片機的中斷控制程序【C語言】 7次下載
- 基于單片機的中斷控制程序(蜂鈴器_timer1)【C語言】 13次下載
- 單片機按鍵控制程序【C語言】 29次下載
- 單片機按鍵控制程序【匯編版】 0次下載
- 步進電機控制程序(匯編語言+89c51單片機)
- 繼電器開關控制器是什么東西 419次閱讀
- 基于STM32單片機的智能冰箱控制系統設計 582次閱讀
- 單片機的I/O口不夠,怎樣同時控制最多81個繼電器 5228次閱讀
- 單片機里的程序是如何運行? 3908次閱讀
- AVR單片機控制繼電器吸合與斷開的仿真設計 2677次閱讀
- 如何進行PLC控制程序的設計詳細資料PPT說明 5753次閱讀
- 探析單片機中PWM的原理與控制程序 3117次閱讀
- 51單片機控制繼電器的方式及原理 3.3w次閱讀
- 為什么單片機不能直接驅動繼電器和電磁閥? 4430次閱讀
- 如何利用單片機來驅動繼電器 2.2w次閱讀
- 開關控制報警器如何用單片機實現 5773次閱讀
- 如何利用單片機高級C語言編制應用程序 2831次閱讀
- 單片機控制繼電器_51單片機控制繼電器詳解 7.2w次閱讀
- 單片機3.3V驅動繼電器電路(四種電路設計原理圖詳解) 8.7w次閱讀
- 單片機和嵌入式的區別終于看懂了 5.5w次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 651單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 751單片機大棚環境控制器仿真程序
- 1.10 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多