下面这个实验程序是在上一个实验程序的基础上,将字符接收改成中断方式。每当接收到一个字符,进入中断服务程序,在中断服务程序中,从UART的接收数据寄存器中读出字符,然后通过字符发送子程序发送出去。如果与WINDOWS的超级终端相连,则键盘上按什么按键,则显示对应的字符。
同样还是利用ST的开发工具,生成一个汇编程序的框架,然后修改其中的main.asm,修改后的代码如下。要注意的是,一定要将串口的接收中断服务程序的入口地址填写中断向量表中正确的位置。
编译通过后,下载到开发板,运行程序。在PC机上运行超级终端,波特率为9600,然后从键盘上输入按键,屏幕上就显示对应的字符。
stm8/
#include "mapping.inc"
#include "STM8S207C_S.INC"
; 定义堆栈空间的起始位置和结束位置
stack_start.w EQU $stack_segment_start
stack_end.w EQU $stack_segment_end
; 下面开始定义一个段,该段位于ROM中
segment 'rom'
; 定义复位后的第一条指令的标号(即入口地址)
main.l
;
; 首先要初始化堆栈指针
LDW X,#stack_end
LDW SP,X
;
CALL UART3_Init ; 初始化串口3
RIM ; 允许CPU全局中断
MAIN_LOOP.L
JRA MAIN_LOOP ; 进入无限循环
;
; UART3接收中断服务程序
interrupt UART3_Recv_ISR
UART3_Recv_ISR.L
PUSH A
LD A,LINUART_DR ; 读入接收到的字符
CALL UART3_SendChar ; 将字符发送出去
POP A
IRET
;
; 函数功能:初始化UART3
; 输入参数:无
; 输出参数:无
; 返 回 值:无
; 备 注:寄存器A -- 被修改掉
UART3_Init.l ; 串口初始化子程序
LD A,#0 ; 禁止UART发送和接收
LD LINUART_CR2,A
LD A,#0
LD LINUART_CR1,A ; b5 = 0,允许UART
; b2 = 0,禁止校验
LD A,#0 ; b5,b4 = 00,1个停止位
LD LINUART_CR3,A
; 设置波特率,必须注意以下几点:
; (1) 必须先写BRR2
; (2) BRR1存放的是分频系数的第11位到第4位,
; (3) BRR2存放的是分频系数的第15位到第12位,和第3位到第0位
; 例如对于波特率位9600时,分频系数=2000000/9600=208
; 对应的十六进制数为00D0,BBR1=0D,BBR2=00
LD A,#$00
LD LINUART_BRR2,A
LD A,#$0D
LD LINUART_BRR1,A ; 实际的波特率分频系数为00D0(208)
; 对应的波特率为2000000/208=9600
LD A,#$2C ; b3 = 1,允许发送
; b2 = 1,允许接收
; b5 = 1,允许产生接收中断
LD LINUART_CR2,A
RET
;
; 函数功能:从UART3发送一个字符
; 输入参数:寄存器A -- 要发送的字符
; 输出参数:无
; 返 回 值:无
; 备 注:无
UART3_SendChar.l ; 发送字符的子程序
PUSH A ; 将要发送的字符保存到堆栈中
SENDCHAR_1.L
LD A,LINUART_SR ; 读取当前状态寄存器的值
AND A,#$80 ; 若发送寄存器不空,则等待
JREQ SENDCHAR_1
POP A ; 从堆栈中恢复要发送的字符
LD LINUART_DR,A ; 将要发送的字符送到数据寄存器
RET
interrupt NonHandledInterrupt
NonHandledInterrupt.l
iret
; 下面定义中断向量表
segment 'vectit'
dc.l {$82000000+main} ; reset
dc.l {$82000000+NonHandledInterrupt} ; trap
dc.l {$82000000+NonHandledInterrupt} ; irq0
dc.l {$82000000+NonHandledInterrupt} ; irq1
dc.l {$82000000+NonHandledInterrupt} ; irq2
dc.l {$82000000+NonHandledInterrupt} ; irq3
dc.l {$82000000+NonHandledInterrupt} ; irq4
dc.l {$82000000+NonHandledInterrupt} ; irq5
dc.l {$82000000+NonHandledInterrupt} ; irq6
dc.l {$82000000+NonHandledInterrupt} ; irq7
dc.l {$82000000+NonHandledInterrupt} ; irq8
dc.l {$82000000+NonHandledInterrupt} ; irq9
dc.l {$82000000+NonHandledInterrupt} ; irq10
dc.l {$82000000+NonHandledInterrupt} ; irq11
dc.l {$82000000+NonHandledInterrupt} ; irq12
dc.l {$82000000+NonHandledInterrupt} ; irq13
dc.l {$82000000+NonHandledInterrupt} ; irq14
dc.l {$82000000+NonHandledInterrupt} ; irq15
dc.l {$82000000+NonHandledInterrupt} ; irq16
dc.l {$82000000+NonHandledInterrupt} ; irq17
dc.l {$82000000+NonHandledInterrupt} ; irq18
dc.l {$82000000+NonHandledInterrupt} ; irq19
上一篇:STM8与汇编语言(10)--UART应用之二
下一篇:STM8与汇编语言(12)--EEPROM应用
推荐阅读
史海拾趣
随着国内市场的逐步稳定,比亚迪开始将目光投向海外市场。1998年,比亚迪在欧洲荷兰成立了第一家海外分公司,这是其全球化战略的重要一步。随后,比亚迪相继在香港和美国设立分公司,进一步扩大了其国际影响力。这些海外分公司的成立不仅为比亚迪带来了更多的商机,也使其能够更好地了解和学习国际先进技术和市场经验。通过全球化的布局,比亚迪逐渐在电子行业树立了良好的品牌形象。
近年来,全球半导体行业面临了诸多挑战,包括供应链紧张、技术迭代加速等。面对这些挑战,Globaltech积极调整战略,加强与上游供应商和下游客户的沟通与合作,确保供应链的稳定。同时,公司还加大了对新技术和新产品的研发投入,以应对行业变化带来的挑战。通过这些努力,Globaltech不仅成功应对了行业挑战,还实现了业务的持续增长。
在追求经济效益的同时,Deltron公司始终关注环境保护和可持续发展。公司大力推行绿色生产理念,引进环保设备和技术,减少生产过程中的污染物排放。同时,公司还积极参与环保公益活动,提高员工和公众的环保意识。这些举措不仅提升了Deltron的品牌形象,也为公司的长期发展奠定了坚实基础。
随着市场的竞争日益激烈,Danube意识到单纯的技术创新已经不足以支撑公司的长远发展。于是,公司开始注重产品的品质和品牌的塑造。他们引进了先进的生产设备和质量管理体系,对每一个环节都进行严格把控,确保每一件产品都符合高标准的质量要求。同时,Danube还加大了品牌宣传的力度,通过参加国际电子展、赞助体育赛事等方式,提高了品牌的知名度和美誉度。这些努力让Danube的产品在市场上获得了更多的认可,公司的业务规模也逐渐扩大。
全志科技的起源可以追溯到赵广民创立炬力公司的时期。作为“MP3之父”,赵广民带领炬力在短短几年内实现了MP3芯片出货量的突破,年销售额和净利润均取得了惊人的增长。然而,炬力的股权结构问题最终导致了赵广民的离职。他随后创建了全胜微电子有限公司,并在不久后遭遇不幸去世。但赵广民的创业精神和市场洞察力为全志科技的诞生奠定了坚实的基础。
随着平板市场的逐渐饱和,全志科技开始寻求新的增长点。公司在保持原有产品线优势的同时,积极拓展多品类产品线,实施了营销端BU化,并提出了未来大方向的MANS战略。这一转型不仅增强了公司的市场竞争力,也为公司的长期发展打开了新的局面。
这样的是: 在PC上我跑IAR, 和 ADS 的两个工程文件,都没有问题, 用自己做的调试板+H-JTAG,都能正常 而换到本本上,在H-JTAG时,检测硬件都没问题,但调试时,分别出了问题: 1 在ADS 上, 按F5后,跑不到,MAIN() 函数那,发现死在 PLL初 ...… 查看全部问答∨ |
|
ZLG的深入浅出ARM7中采用LPC2131。本人看了 SPI 后又去看了下ADC。 单独的 SPI 没有问题。然后我想用ADC后把显示的数据通过SPI,然后在LED显示。发现只要在 AD的有关引脚有电压输入就会使现实乱码。想请教一下是不是 ADC会影响 SPI 。 其中 ...… 查看全部问答∨ |
本帖最后由 dontium 于 2015-1-23 13:11 编辑 设计电路,在模电书上看到信号放大的电路,是三个运放,有没有两个运放的还有就是单电源运放放大的 … 查看全部问答∨ |
本帖最后由 jameswangsynnex 于 2015-3-3 20:01 编辑 台积电董事长张忠谋(19)日表示,台积电高资本支出政策目前不会改变,藉此带动2015年前的税前获利年复合成长率高于10%。台积电20纳米明年首季开始供应客户,持续领先业界,绝对会是客户第一选 ...… 查看全部问答∨ |