⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 h08sci_1.lst

📁 项目是为日本瑞萨工作所做的BAKE炉温控系统 整个文件夹包括设计文档
💻 LST
📖 第 1 页 / 共 2 页
字号:
__start:
__text_start:
    8000 45 0240      ldHX	#0x0240
    8003 94           tXS	
    8004 CD 8035      jsr	__HC08Setup
    8007 45 0044      ldHX	#0x0044
    800A 65 0045      cpHX	#0x0045
    800D 27 06        beq	0x8015
    800F 6F 00        clr	0,X
    8011 AF 01        aiX	#1
    8013 20 F5        bra	0x800A
    8015 45 0045      ldHX	#0x0045
    8018 94           tXS	
    8019 45 8000      ldHX	#0x8000
    801C 65 8000      cpHX	#0x8000
    801F 27 0B        beq	0x802C
    8021 E6 00        ldA	0,X
    8023 9EE7 00      stA	0,S
    8026 AF 01        aiX	#1
    8028 A7 01        aiS	#1
    802A 20 F0        bra	0x801C
    802C 45 0240      ldHX	#0x0240
    802F 94           tXS	
    8030 CD 805A      jsr	_main
_exit:
    8033 20 FE        bra	0x8033
FILE: setup.c
(0001) /*_HC08Setup:GP32系统初始化子程序------------------------------------------*
(0002) *功能:系统初始化设置:设置CONFIG1和CONFIG2寄存器                           *
(0003) *      CGM的寄存器设置:由外部晶振f=32.768kHz,产生内部总线时钟2.4576MHz    *
(0004) *参数:无                                                                  *
(0005) *返回:无                                                                  *
(0006) *-------------------------------------------------------------------------*/ 
(0007) #include "GP32C.h"     //映像寄存器地址头文件
(0008) void _HC08Setup(void)
(0009) {
__HC08Setup:
    8035 A6 01        ldA	#1
    8037 B7 1E        stA	0x1E
(0010)    //(1)初始化CONFIG2
(0011)    CONFIG2=0b00000001;  //SCIBDSRC=1内部总线时钟用作SCI
(0012)                         //时钟;OSCSTOPENB=0在stop模式下
(0013)                         //禁止振荡器工作      
(0014)    //(2)初始化CONFIG1
(0015)    CONFIG1=0b00111101;//COPD=1 禁止COP模块
    8039 A6 3D        ldA	#61
    803B B7 1F        stA	0x1F
(0016)                       //STOP=0 禁止STOP指令
(0017)                       //SSREC=1 32个CGMXCLK周期退出
(0018)                       //STOP模式
(0019)                       //LVI5OR3=1 LVI工作在5V
(0020)                       //LVIPWRD=1 禁止LVI模块电源
(0021)                       //LVIRSTD=1 允许LVI复位信号
(0022)                       //LVISTOP=0 在stop模式下禁止LVI
(0023)                       //COPRS=0 COP溢出范围使用长的时间
(0024)    //(3)设置PLL分频                                            
(0025)    PCTL=0x00;         //①禁止PLL:清零PLL控制寄存器PCTL             
    803D 3F 36        clr	0x36
(0026)    PCTL=0x01;         //②将P、E写入PTCL,置VCO的参考频率
    803F A6 01        ldA	#1
    8041 B7 36        stA	0x36
(0027)                       //  为2             
(0028)    PMSH=0x01;         //③将N写入PMSH、PMSL,置VCO的倍
    8043 A6 01        ldA	#1
    8045 B7 38        stA	0x38
(0029)                       //  频因子为$12C          
(0030)    PMSL=0x2C;             
    8047 A6 2C        ldA	#44
    8049 B7 39        stA	0x39
(0031)    PMRS=0b10000000;   //④将L写入PMRS,置VCO的输出频率范
    804B A6 80        ldA	#-128
    804D B7 3A        stA	0x3A
(0032)                       //  围系数为$80   
(0033)    PRDS=0x01;         //⑤将R写入PRDS
    804F A6 01        ldA	#1
    8051 B7 3B        stA	0x3B
(0034)    PCTL|=(1<<5);      //⑥置PCTL.PLLON=1,启动PLL电路  
    8053 1A 36        Bset	5,0x36
(0035)    PBWC|=(1<<7);      //⑦PBWC自动带宽控制位=1,选择自动
    8055 1E 37        Bset	7,0x37
(0036)                       //  控制方式  
(0037)    PCTL|=(1<<4);      //⑧PCTL.BCS=1,选择PLL电路为时钟源
    8057 18 36        Bset	4,0x36
    8059 81           rts	
_main:
  i                    --> X+0
    805A A7 FF        aiS	#-1
    805C 95           tSX	
FILE: main.c
(0001) /*-------------------------------------------------------------------------*
(0002) *工程名:H08SCI_1.prj                                                       *
(0003) *编程者:葛强                                                               *
(0004) *单  位:苏州大学freescale MCU&DSP研发中心                                  *
(0005) *日  期:2006.11.20                                                         *
(0006) *本工程包含文件:                                                           *
(0007) *      main.c:主程序文件                                                   *
(0008) *      Setup.c:MCU初始化子程序文件                                         *
(0009) *      GP32C.H:MCU映像寄存器地址头文件                                     * 
(0010) *      SCI.h:串行通信子程序头文件                                          *
(0011) *      SCI.c:串行通信子程序文件                                            *
(0012) *硬件连接:将PC串口和扩展版串口相连                                         *
(0013) *程序描述:把收到的数据发送回去                                             * 
(0014) *目    的:初步掌握利用查询方式进行串行通信的基本知识                       *
(0015) *说    明:无                                                               *
(0016) *注    意:无                                                               *
(0017) *--------------------《嵌入式应用技术基础教程》教学实例-------------------*/
(0018) 
(0019) 
(0020) /*头文件*/
(0021) #include "GP32C.H"       //包含头文件
(0022) #include "SCI.h"         //串行通信子程序头文件
(0023) #include "SCIInit.h"     //串口初始化
(0024) /*[内存变量声明]*/
(0025) unsigned char SerialBuff[]; //存放接收数据的数组
(0026) /*[主程序]*/
(0027) void main()
(0028) {
    805D CD 8089      jsr	_SCIInit
    8060 95           tSX	
    8061 20 21        bra	0x8084
(0029)     unsigned char i;
(0030)     //调串行口初始化子程序
(0031)     SCIInit();              
(0032)     while(1)
(0033)     {
    8063 45 0044      ldHX	#0x0044
    8066 89           pshX	
    8067 8B           pshH	
    8068 A6 01        ldA	#1
    806A 87           pshA	
    806B CD 8142      jsr	_SCIReN
    806E A7 03        aiS	#3
    8070 95           tSX	
    8071 B7 41        stA	*__r1
    8073 F7           stA	0,X
(0034)       //接收1个数据
(0035)       i=SCIReN(1,SerialBuff);         
(0036)       //发送接到的数据
(0037)       if(i==0) 
    8074 26 0E        bne	0x8084
(0038)       	SCISendN(1,SerialBuff);        
    8076 45 0044      ldHX	#0x0044
    8079 89           pshX	
    807A 8B           pshH	
    807B A6 01        ldA	#1
    807D 87           pshA	
    807E CD 80A5      jsr	_SCISendN
    8081 A7 03        aiS	#3
    8083 95           tSX	
(0039)     }  
    8084 20 DD        bra	0x8063
    8086 A7 01        aiS	#1
    8088 81           rts	
FILE: SCIInit.c
(0001) /*SCIInit:串行口初始化子程序-----------------------------------------------*
(0002) *功 能:对串行口进行初始化,默认为允许SCI,正常码输出,8位数据,无校验等        *
(0003) *      允许发送器允许接收器.查询方式收发,波特率为9600(设fBUS=2.4576MHz)   *                                           *
(0004) *参 数:无                                                                  *
(0005) *返 回:无                                                                  *
(0006) *-------------------------------------------------------------------------*/
(0007) #include "SCIInit.h"
(0008) void SCIInit(void)
(0009) {   //(1)总线频率fBUS=2.4576MHz,定义波特率Bt=9600
_SCIInit:
    8089 A6 02        ldA	#2
    808B B7 19        stA	0x19
(0010)     SCBR=0b00000010;
(0011)     //(2)设置允许SCI,正常码输出、8位数据、无校验
(0012)     SCC1=0b01000000; 
    808D A6 40        ldA	#64
    808F B7 13        stA	0x13
(0013)     //(3)设置允许发送、允许接收,查询方式收发     
(0014)     SCC2=0b00001100; 
    8091 A6 0C        ldA	#12
    8093 B7 14        stA	0x14
    8095 81           rts	
_SCISend1:
  o                    --> X+2
    8096 95           tSX	
FILE: SCI.c
(0001) /*-------------------------------------------------------------------------*
(0002) *文件描述:本文件包含了串行通信的4子程序,分别为:                            *  
(0003) *(1)SCISend1:串行发送1字节                                                 *
(0004) *(2)SCISendN:串行发送n字节                                                 *
(0005) *(3)SCIRe1:串行接收1字节                                                   *
(0006) *(4)SCIReN:串行接收n字节                                                   *
(0007) *----------------------《嵌入式应用技术基础教程》-------------------------*/
(0008) 
(0009) /*[包含头文件]*/
(0010) #include "SCI.h"
(0011) /*SCISend1:串行发送1个字节-------------------------------------------------*
(0012) *功  能:串行发送1个字节                                                    *
(0013) *参  数:要发送的数据                                                       *
(0014) *返  回:无                                                                 *
(0015) *-------------------------------------------------------------------------*/
(0016) void SCISend1(unsigned char o)
(0017) {
    8097 20 09        bra	0x80A2
(0018)    //判断ReStatusR的第SendTestBit位是否为1,是1可以发送
(0019)    while(1)	
(0020)       if ((ReSendStatusR & (1<<SendTestBit)) != 0)
    8099 0F 1606      BRclr	7,0x16,0x80A2
(0021)       {
    809C E6 02        ldA	2,X
    809E B7 18        stA	0x18
(0022)       	ReSendDataR=o;
(0023)       	break;
    80A0 20 02        bra	0x80A4

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -