电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>单片机>单片机对继电器方向及开关的控制程序

单片机对继电器方向及开关的控制程序

2017-09-06 | rar | 0.3 MB | 次下载 | 免费

资料介绍

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
 
下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1TC358743XBG评估板参考手册
  2. 1.36 MB  |  330次下载  |  免费
  3. 2开关电源基础知识
  4. 5.73 MB  |  6次下载  |  免费
  5. 3100W短波放大电路图
  6. 0.05 MB  |  4次下载  |  3 积分
  7. 4嵌入式linux-聊天程序设计
  8. 0.60 MB  |  3次下载  |  免费
  9. 5基于FPGA的光纤通信系统的设计与实现
  10. 0.61 MB  |  2次下载  |  免费
  11. 651单片机窗帘控制器仿真程序
  12. 1.93 MB  |  2次下载  |  免费
  13. 751单片机大棚环境控制器仿真程序
  14. 1.10 MB  |  2次下载  |  免费
  15. 8基于51单片机的RGB调色灯程序仿真
  16. 0.86 MB  |  2次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33564次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6653次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537796次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420026次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191185次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费