本段程序是在STC官方程序的基础上精简而成,只保留了串口单向发送,使用串口助手可以接收到数据。
本段代代码目的是为了调试的方便,单片机内部一些工作状态和数据可以通过串口发送出来,比如AD采集到的数据等,对调试程序会起到事半功倍的效果。以下为asm格式汇编代码:
; --- 使用伟福6000编译,STC15W401AS 实测通过------------
;-----定时器2用作串口1的波特率发生器-------
;在Keil开发环境下请选择Intel的8058芯片型号进行编译
;工作频率为11.0592MHz
;-----------------------------------------
AUXR EQU 08EH ;//辅助寄存器
T2H DATA 0D6H ;//定时器2高8位
T2L DATA 0D7H ;//定时器2低8位
BUSY BIT 20H.0 ;//忙标志位
;-----------------------------------------
ORG 0000H
LJMP MAIN
ORG 0023H
LJMP UART_ISR
;//-----------------------------------------
ORG 0100H
MAIN:
CLR A
CLR BUSY
CLR EA
MOV SP,#3FH
;//-------------------------------
MOV SCON,#50H ;//8位可变波特率,无校验
MOV T2L,#0D0H ;//设置波特率重装值(65536-18432000/4/115200)
MOV T2H,#0FFH ; #FFD0对应波特率57600
MOV AUXR,#14H ;//T2为1T模式, 并启动定时器2
ORL AUXR,#01H ;//选择定时器2为串口1的波特率发生器
SETB ES ;//使能串口中断
SETB EA
;//-------------------------------
;发送串口测试数据,三次
MOV A,#0FH
LCALL SENDDATA
MOV A,#0BH
LCALL SENDDATA
MOV A,#0CH
LCALL SENDDATA
SJMP $
;UART 中断服务程序
;----------------------------*/
UART_ISR:
PUSH ACC
PUSH PSW
JNB TI,ISR_EXIT ;//检测TI位
CLR TI ;//清除TI位
CLR BUSY ;//清忙标志
ISR_EXIT:
POP PSW
POP ACC
RETI
;
SENDDATA:
JB BUSY,$ ;//等待前面的数据发送完成
SETB BUSY
MOV SBUF,A ;//写数据到UART数据寄存器
RET
;//-----------------------------------------
END
关键字:STC单片机 串口发送数据 汇编程序
引用地址:
STC单片机串口发送数据汇编程序
推荐阅读最新更新时间:2024-03-16 15:45
STC单片机EEPROM功能模块
// STC单片机EEPROM功能模块 #include STCSTC12C2052AD.h #include intrins.h // 声明与IAP相关的SFR sfr IAP_DATA = 0xE2; sfr IAP_ADDRH = 0xE3; sfr IAP_ADDRL = 0xE4; sfr IAP_CMD = 0xE5; sfr IAP_TRIG = 0xE6; sfr IAP_CONTR = 0xE7; // 定义ISP/IAP/EEPROM命令 #define CMD_IDLE 0 #define CMD_READ 1 #define CMD_PROGRAM 2 #define CMD_ERASE 3 //
[单片机]
基于STC单片机的智能LED路灯控制器设计
当前巨量的能源消耗和由此引起的能源短缺、价格上涨等已使得节约能源成为一项十分迫切的任务。各国消耗的能源中很大一部分用于照明,其中城市公共照明(主要是道路照明和景观照明)在我国照明耗电中占30%.有资料显示,每年用于照明的电力在3 000 亿度以上,若采用LED 照明,每年就可以节约1/3 的照明用电,基本上相当于总投资规模超过2 000 亿元的三峡工程的全年发电量。综合以上优点,LED光源自然成为城市公共照明的首选,同时目前国内大部分城市的道路照明管理系统直至现在仍在沿用简单的光控、钟控等传统控制方式。这些系统普遍存在着难以反馈路灯运行状态信息、难以进行远程控制等局限,基本没有节电效果,并且采用传统的人工巡检,不仅使路灯管理部
[电源管理]
数码管显示的电子时钟汇编程序
;************************************************************* ;功能: ;实现电子时钟显示(汇编) ;定义: ; P3口位选,P1口段选,P0.0,P0.1,P0.2为调时口 ;时间: ; 2010 11 26 ;************************************************************* SECOND EQU 30H MINITE EQU 31H HOUR EQU 32H HOURK BIT P0.0 MINITEK BIT P0.1 SECONDK BIT P0.2 DISPBUF EQU 40H DIS
[单片机]
STC单片机知识点
1.单片机内部三大资源:FLASH(程序存储空间也叫ROM),RAM(内存),SFR(特殊功能寄存器)。我们对单片机的操作基本都是对SFR的操作。 2.stc89c52 特点:8K FLASH,512B RAM,1个UART,2个定时器,8个中断源,P0口无上拉功能。 3.对FLASH的写操作,一般都是按页擦除,只有先把一页数据擦除后 才能写入,相当于先把数据清理后才能写。 4.对于一款新的单片机,要用sizeof,测试char,short,int等类型所占的空间大小。
[单片机]
单片机之秒表汇编程序
此程序上电后开始显示并不正常,过一会才正常,按键似乎并没有用,希望能明白怎么回事 频率12mhz ,从零开始计到99秒,原理为先通过十六进制和十进制的转换后使用变址寻址把数据 显示出来,十位和各位共延时4毫秒,如果有按键按下计数从零开始 DIZHI EQU 21H ;用于中间的数据传送 COUNT EQU 22H ;用于计数器的自加 ORG 0000H JMP START ORG 0030H TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;共阳极代码 START: CLR COUNT WORK1: CALL DISPY ;十六进制的转换,输出代
[单片机]
STC单片机内部EEPROM的应用
单片机运行时的数据都存在于RAM(随机存储器)中,在掉电后RAM中的数据是无法保留的,那么怎样使数据在掉电后不丢失呢?这就需要使用EEPROM或FLASHROM等存储器来实现。在传统的单片机系统中,一般是在片外扩展存储器,单片机与存储器之间通过IIC或SPI等接口来进行数据通信。这样不光会增加开发成本,同时在程序开发上也要花更多的心思。在STC单片机中内置了EEPROM(其实是采用IAP技术读写内部FLASH来实现EEPROM),这样就节省了片外资源,使用起来也更加方便。下面就详细介绍STC单片机内置EEPROM及其使用方法。 STC各型号单片机内置的EEPROM的容量各有不同,见下表: 单片机芯
[单片机]
51单片机串口通信试验汇编程序
(今天是硬生生的把它给抠出来了):PC 通过串口助手向单片机系统传递命令和数据:以A5开始,以5A结束;中间是数据,长度不一,要求把数据部分用led灯显示出来;并且要求循环显示; //This is my x_Ed program code //we use it as the pc communicated with the mcu //At the same time,we want to see the result by LCD; STFLAG BIT 00H //收到起始码标志,1为收到起始码 EDFLAG BIT 01H //到结束码标志,1为收到结束码 TMFLAG BIT 02H //定时时间到标志
[单片机]
avr单片机LED灯循环位移汇编程序
本程序中使用的avr单片机是m16芯片,可以让8个led实现循环移位的效果/* * loopLEDLight.asm * * Created: 2014/3/14 9:47:20 * Author: Wujie */ .include m16def.inc .def temp1=r20 .def count=r17 .org $0000 rjmp main .org $002A main: ldi r16,high(RAMEND) out sph,r16 ldi r16,low(RAMEND) out spl,r16 ser temp1 out ddrc,temp1 out portc,temp1 ldi c
[单片机]