资料介绍
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次下载 | 免费
评论
查看更多