STM8S207_UART1串口发送中断程序

STM8S207_UART1串口发送中断程序,第1张

void CLK_INIT(void)

{

CLK_CKDIVR = 0x19 /*HSI/8、CPU = 2/2,1M速度*/

CLK_PCKENR1 = 0x04 /*只开启uart1的时钟*/

CLK_PCKENR2 = 0x00/*打开ADC的时钟*/

}

void IO_INIT(void)

{

PA_CR1 = 0x00 /*推挽输出*/

PA_CR2 = 0x00 /*最大输出为2MHZ,禁止外部中断*/

PA_DDR |= 0x20 /*PA5为输出*/

}

void UART1_INIT(void)

{

UART1_BRR2 = 0x00

UART1_BRR1 = 0x0d /*2M的Fmaster下9600的波特率*/

UART1_DR = 0xaa

UART1_CR2 = 0x08 /*发送完寄存器空,发送使能*/

UART1_CR3 = 0x00 /*1个停止位*/

}

#pragma vector = UART1_T_TXE_vector

__interrupt __root void UART1_TX(void)

{

UART1_SR = 0x00

UART1_DR = 0xaa

}

只作为参考,希望对您有帮助,谢谢!

hi ,你好,我是04级电子信息毕业,我的毕业论文写的是《LED显示屏设计》,可能我们选到一个题目了,包括硬件电路、信号处理、汇编语言的代码,呵呵

以下为目录,可供参考,禁止抄袭,如果觉得好,给分,我发论文给你。

目录已经发到你邮箱了

摘要: 本设计以89c51单片机为核心,采用点阵图形显示器显示汉字,通过时序控制电路,控制信号电路,显示驱动电路等完成显示。

Abstract: This design take the 89c51 monolithic integrated circuit asa core, uses the lattice graph monitor demonstration Chinesecharacter, through the sequential control electric circuit, controlsthe signal circuit, demonstrated the actuation electric circuit and soon completes the demonstration.

关键字:列显示驱动、时序控制电路、串行异步通信方式、显示驱动电路、控制信号电路

目 录

绪 论……………………………………………………1

第1章 设计思想………………………………………2

第2章 设计方案………………………………………4

第3章 基本结构………………………………………5

第4章 硬件部分………………………………………9

4.1 微机硬件电路…………………………………9

4.1.1 显示控制电路……………………………9

4.1.2 显示驱动电路……………………………10

4.2 控制信号………………………………………12

4.2.1 与列显示数据有关的信号……………13

4.2.2 行号锁存器打入信号…………………13

4.2.3 区分上写部分的控制信号……………13

4.2.4 清屏信号………………………………14

第5章 软件部分………………………………………15

5.1 理论分析………………………………………15

5.2 程序设计………………………………………17

5.3 流程图…………………………………………22

5.3. 1主程序流程图…………………………22

5.3. 2 中断服务程序流程图…………………23

第6章 结论……………………………………………24

参考文献…………………………………………………25

致谢………………………………………………………26

5.2程序设计

ORG0000H

SJMPMAIN :跳转到主程序MAIN

ORG0023H

SIENTRY: AJMP1 SIS :串行通信中断入口,跳转到

:串行通信中断服务程序SIS

MAIN: MOVSP,60 :设栈

MOVR0,80H :指向RAM区

MOVR1,00:R0,R1:RAM指针

MOVDPTR,1000H :EPROM的数据首地址

:DPTR:EPROM指针

REPROM: MOVA,00

MOVC A,@A+DPTR :从EPROM1000H读数据

INV DPTR :从EPRON读200H个字节

:数据到RAM

PUSHDPL :DPTR进栈

PUSHDPH

MOV DPH,R0 :DPTR换成RAM指针

MOV DPL,R1

MOVX@DPTR,A :数据送RAM

INC DPRT

MOV R0,DPH :存DPTR

MOV R1,DPL

POP DPH :d出DPTR(EPROM地址)

POP DPL

MOV R2,DPH :R2:判是否到1200H

CJNE R2,12H,REPROM :未传送完200H个字节转回

SINIT:MOV TMOD,21H :设T1方式2,T0方式1

MOV TH1,FAH:设T1定时6.51μs

SETB 8EH :置TCONBIT6,打开T1

MOV TH0,00 :置T0定时

MOV TL0,00

MOV R6,7EH

MOV R7,00H

MOV SCON,50H:设SCON为50H,方式1,REN=1

MOV PCON,00 :设PCIN为0

MOV 50H,82H

MOV 51H,00

SETB AFH :开中断

SETB ACH :允许串行通信中断

SETB 9CH :SCONBIT4,REN=1

NEXT CLRC

MOV A,R7 :R7初值为0

ADD A,00

MOV R7,A

MOV A,R6 :R6初值为7E

ADC A,02H

MOV A,51H:51初值为0

XRL A,R7 :A=R7?

JNZDISP1 :不等,转到DISP1

MOV A,50H :等,50初值为82H

XRL A,R6 :A=R6?

JNZ04H :不等,转到DISP1

MOV R6,#80H :等,R6=80H

MOV R7,00

DSP1: MOV R0,00

TM256 MOV R3,00

TM512 MOV R2,00

MOV DPH,R6 :80H

MOV DPL,R7 :00H

CONT2:MOV R1,00

CLRB4H :P3BIT4=T0,上下控制=0

DISPH: MOVX A@DPTR :读入RAM

INCDPTR

INCR1:R1:字节计数

MOV P1,A :向P1输出一个RAM字节数据

CLRB3H :P3BRT3=INT1

SETB B3H:INT1是移位寄存器的打入脉冲

CLRB5H :P3BRT5=T1

SETB B5H

CLRB5H:T1一共输出8个脉冲

SETB B5H :即移位8次

CLRB5H :T1是移位寄存器的移位脉冲

SETB B5H

CLR B5H

SETB B5H

CLR B5H

SETB B5H

CLR B5H

SETB B5H

CLR B5H

SETB B5H

CLR B5H

SETB B5H

CJNE R1,10H,DISPH :R1<>10H,转到DISPH

:10H=16D,16*8=128

PUSH DPH :若R1=10H,则DPTR进栈

PUSH SPL

SETB B4H:P3BIT4=T0,上下控制=1

CLRC

MOV A,DPL

ADD A,P0H :跳过F0H个字节

MOV DPL,A :原DPTR已为10H,10H+F0H指向

MOVA,DPH :256字节之后

ADC A,00: 即指向下一半

MOV DPH,A

DISPL:MOVX A,@DPTE

INCDPTR

INCR1

MOV P1,A

CLRB3H

SETB B3H

CLRB5H

SETB B5H

CLRB5H

SETB B5H

CLRB5H

SETB B5H

CLRB5H

SETB B5H

CLRB5H

SETB B5H

CLRB5H

SETB B5H

CLRB5H

SETB B5H

CLRB5H

SETB B5H

CJNE R1,20H,D4H:R1<>20H,转到DISPL

CLRB2H:P3BIT2=INT0

SETB B2H

MOV P1,R2 :R2输出到P1

MOV DPTR,0000

MOVX @DPTR,A :只是让地址动作

INCR2

POP DPL

POP DPH

CINER2,10H,CONT1 :R2<>10H转到CONT1

INC R3 :R2=10H

CINE R3,FFH,TIM256 :R3<>FFH,转到TIM256

INC R0 :R3=FFH

CINER0,02H,TIM512 :R0<>02H,TIM512

LJMPNEXT

TIM512: LJMP TM512:$21

CONT1: LJMP CONT2

TIM256: AJMP0 TM256

ORG 0800H :串行通信服务程序

SIS: CLRAFH :IE BIT7关中断

CLR 98H:SCONBIT0RI清接收中断

MOV A,SBUF

XRLA,3FH :3FH传输起始标

JZ DTSTART :SBUF=3FH,开始

SJMPCLOSE :否则结束

DTSTART: MOV DPTR,#0001H:只是让地址动作

MOVX @DPTR,A :关00译码,开01译码

:向74LS595送清除信号SRCLR*

CLR B2H :把清零的结果打入列输出锁存器

:完成关显示 *** 作

MOV DPTR,#8000H

MOV SBUF,A

WAITT:JNB99H,WAITT :SCONB1TI=0,等待发射完成

CLR 99H:SCONB1TI=1

WAITR: JNB98H,WAITR:SCONB0RI=0,等待接受完成

CLR98H:SCONB0RI=1

MOV A,SBUF :传输字节计数L

MOV 50H,A

CONTINUE: MOVSBUF,A

WARTT1: JBC 99H,WARTT1 :SCONB1TI=1,发射完成

SJMP WAITT1:SCONB1TI=0,等待发射完成

WAITTR1: JBC 98H,RDATA:SCONB0RI=1,接收完成

SJMP WarrR1 :SCONB0RI=0,等待接收完成

RDATA: MOVA,SBUF :读入显示数据

MOV@DPTR,A

INC DPTR

MOV A,DPH

XRLA,50H

JNZCONTINUE :(A)<>(50H),继续接收

MOVA,DPL :(A)=(50H)

XRL A,51H

JNZ CONTINUE :(A)<>(51H),继续接收

MOVASBUF,A :(A)=(51H)WAITTE: JNB 99H,WAITTE:SCONB1TI=0,等待发射完成

CLR 99H :SCONB1TI=1

MOVDPTR,8000H

MOVR0,20H

MOVR1,10H

MOVR6,80H

MOVR7,00

CLOSE: SETB AFH:IE

RETI

ORG 0800H

DISPLAYDATA:DB00,00,00,00,00,00,00,00,00,00


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11580069.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存