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

📄 tg1286~1.lst

📁 项目是为日本瑞萨工作所做的BAKE炉温控系统 整个文件夹包括设计文档
💻 LST
📖 第 1 页 / 共 5 页
字号:
__start:
__text_start:
    9046 45 0240      ldHX	#0x0240
    9049 94           tXS	
    904A CD 907B      jsr	__HC08Setup
    904D 45 0094      ldHX	#0x0094
    9050 65 0094      cpHX	#0x0094
    9053 27 06        beq	0x905B
    9055 6F 00        clr	0,X
    9057 AF 01        aiX	#1
    9059 20 F5        bra	0x9050
    905B 45 004F      ldHX	#0x004F
    905E 94           tXS	
    905F 45 9000      ldHX	#0x9000
    9062 65 9046      cpHX	#0x9046
    9065 27 0B        beq	0x9072
    9067 E6 00        ldA	0,X
    9069 9EE7 00      stA	0,S
    906C AF 01        aiX	#1
    906E A7 01        aiS	#1
    9070 20 F0        bra	0x9062
    9072 45 0240      ldHX	#0x0240
    9075 94           tXS	
    9076 CD 90A0      jsr	_main
_exit:
    9079 20 FE        bra	0x9079
FILE: setup.c
(0001) /*_HC08Setup:GP32系统初始化子程序----------------------*
(0002) *功能:系统初始化设置:设置CONFIG1和CONFIG2寄存器       *
(0003)        CGM的寄存器设置:由外部晶振f=32.768kHz,产生内部 *
(0004)        总线时钟2.4576MHz                               *
(0005) *参数:无                                              *
(0006) *返回:无                                              *
(0007) *-----------------------------------------------------*/ 
(0008) #include "GP32C.h"     //映像寄存器地址头文件
(0009) void _HC08Setup(void)
(0010)  {
__HC08Setup:
    907B A6 01        ldA	#1
    907D B7 1E        stA	0x1E
(0011)    //初始化CONFIG2
(0012)    CONFIG2=0b00000001;  //SCIBDSRC=1内部总线时钟用作SCI
(0013)                         //时钟;OSCSTOPENB=0在stop模式下
(0014)                         //禁止振荡器工作      
(0015)    //初始化CONFIG1
(0016)    CONFIG1=0b00111101;  //COPD=1 禁止COP模块
    907F A6 3D        ldA	#61
    9081 B7 1F        stA	0x1F
(0017)                       //STOP=0 禁止STOP指令
(0018)                       //SSREC=1 32个CGMXCLK周期退出
(0019)                       //STOP模式
(0020)                       //LVI5OR3=1 LVI工作在5V
(0021)                       //LVIPWRD=1 禁止LVI模块电源
(0022)                       //LVIRSTD=1 允许LVI复位信号
(0023)                       //LVISTOP=0 在stop模式下禁止LVI
(0024)                       //COPRS=0 COP溢出范围使用长的时间                         
(0025)    PCTL=0x00;         //①禁止PLL:清零PLL控制寄存器PCTL             
    9083 3F 36        clr	0x36
(0026)    PCTL=0x01;         //②将P、E写入PTCL,置VCO的参考频率
    9085 A6 01        ldA	#1
    9087 B7 36        stA	0x36
(0027)                       //  为2             
(0028)    PMSH=0x01;         //③将N写入PMSH、PMSL,置VCO的倍
    9089 A6 01        ldA	#1
    908B B7 38        stA	0x38
(0029)                       //  频因子为$12C          
(0030)    PMSL=0x2C;             
    908D A6 2C        ldA	#44
    908F B7 39        stA	0x39
(0031)    PMRS=0b10000000;   //④将L写入PMRS,置VCO的输出频率范
    9091 A6 80        ldA	#-128
    9093 B7 3A        stA	0x3A
(0032)                       //  围系数为$80   
(0033)    PRDS=0x01;         //⑤将R写入PRDS
    9095 A6 01        ldA	#1
    9097 B7 3B        stA	0x3B
(0034)    PCTL|=(1<<5);      //⑥置PCTL.PLLON=1,启动PLL电路  
    9099 1A 36        Bset	5,0x36
(0035)    PBWC|=(1<<7);      //⑦PBWC自动带宽控制位=1,选择自动
    909B 1E 37        Bset	7,0x37
(0036)                       //  控制方式  
(0037)    PCTL|=(1<<4);      //⑧PCTL.BCS=1,选择PLL电路为时钟源
    909D 18 36        Bset	4,0x36
    909F 81           rts	
_main:
  tmp                  --> X+0
  RF                   --> X+1
    90A0 A7 FD        aiS	#-3
    90A2 95           tSX	
FILE: main.c
(0001) /*-----------------------------------------------------*
(0002) *工 程 名:TG12864E02.prj                               *
(0003) *硬件连接: 1.LCD的DB0-7与MCU的B口的PTB0-7连接          *
(0004) *          2.LCD的RS,R/W,E与MCU的PTC0,PTC1,PTC2连接    *
(0005) *   功 能:初始时显示:"苏州大学        "                *
(0006) *                    "单片机实验室    "                *
(0007) *                    "http://sumcu.s  "                *
(0008) *                    "uda.edu.cn      "                *
(0009) *-----------------------------------------------------*/
(0010) 
(0011) /*[头文件]*/
(0012) #include "GP32C.h"        //映像寄存器地址头文件
(0013) #include "lcd.h"          //Lcd头文件
(0014) #include "SCI.h"          //SCI头文件
(0015) 
(0016) //有关定时器寄存器位定义
(0017) #define TSTOPBit   5      //定时器计数停止位
(0018) 
(0019) //定时器初始化函数声明
(0020) void Timer1init(void);
(0021) //SCI初始化
(0022) extern void SCIInit(void);
(0023) 
(0024) //全局变量声明
(0025) unsigned char Num=0;    //显示的数据
(0026) unsigned char FLine=0;  //得到焦点的行号
(0027) //[外部定义64个字节的Lcd显示缓冲区]
(0028) unsigned char LcdShowBuff[64]="           as   "
(0029)                               "            df  "                
(0030)                               "            df  "                
(0031)                               "            da  ";
(0032) unsigned char YNo=0,XNo=0;
(0033) unsigned int Data=12;
(0034) //*====================================================*
(0035) 
(0036) #pragma abs_address:0x8000
(0037) const INT16U BigNumCode[320]={
(0038)  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0380,0x0C60, //"0"
(0039)  0x0830,0x1830,0x3018,0x3018,0x3018,0x3018,0x701C,0x701C,
(0040)  0x701C,0x701C,0x701C,0x3018,0x3018,0x3018,0x3018,0x1830,
(0041)  0x1830,0x0C60,0x0380,0x0000,0x0000,0x0000,0x0000,0x0000,
(0042)  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x03C0, //"1"
(0043)  0x03C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,
(0044)  0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,
(0045)  0x01C0,0x01C0,0x0FF8,0x0000,0x0000,0x0000,0x0000,0x0000,
(0046)  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x07C0,0x1FF0, //"2"
(0047)  0x3078,0x603C,0x403C,0x001C,0x001C,0x001C,0x0018,0x0038,
(0048)  0x0030,0x0060,0x0040,0x00C0,0x0180,0x0300,0x0600,0x0C02,
(0049)  0x1806,0x3FFC,0x7FFC,0x0000,0x0000,0x0000,0x0000,0x0000,
(0050)  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x07C0,0x0FF0, //"3"
(0051)  0x1878,0x2038,0x0018,0x0018,0x0010,0x0020,0x0040,0x01F0,
(0052)  0x07F8,0x00F8,0x003C,0x001C,0x000C,0x000C,0x000C,0x0008,
(0053)  0x3810,0x3C20,0x1FC0,0x0000,0x0000,0x0000,0x0000,0x0000,
(0054)  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0030,0x0070, //"4"
(0055)  0x00F0,0x00F0,0x0170,0x0170,0x0270,0x0470,0x0470,0x0870,
(0056)  0x1870,0x1070,0x2070,0x6070,0x7FFE,0x7FFE,0x0070,0x0070,
(0057)  0x0070,0x0070,0x0070,0x0000,0x0000,0x0000,0x0000,0x0000,
(0058)  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03F8,0x07F0, //"5"
(0059)  0x07F0,0x0800,0x0800,0x1E00,0x1F80,0x3FE0,0x03F0,0x00F0,
(0060)  0x0078,0x0038,0x0018,0x0018,0x0018,0x0018,0x0010,0x0030,
(0061)  0x3060,0x3FC0,0x1F00,0x0000,0x0000,0x0000,0x0000,0x0000,
(0062)  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x003C,0x00E0, //"6"
(0063)  0x0380,0x0700,0x0E00,0x1C00,0x1800,0x3800,0x33E0,0x7C70,
(0064)  0x7038,0x703C,0x701C,0x701C,0x701C,0x701C,0x301C,0x3818,
(0065)  0x1830,0x0C70,0x07C0,0x0000,0x0000,0x0000,0x0000,0x0000,
(0066)  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1FFE,0x3FFE, //"7"
(0067)  0x3FFC,0x200C,0x401C,0x0018,0x0018,0x0038,0x0030,0x0030,
(0068)  0x0070,0x0060,0x0060,0x00E0,0x00C0,0x00C0,0x01C0,0x0180,
(0069)  0x0180,0x0380,0x0300,0x0000,0x0000,0x0000,0x0000,0x0000, 
(0070)  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x07E0,0x0C38, //"8"
(0071)  0x1818,0x381C,0x381C,0x381C,0x3C38,0x1E30,0x0F60,0x0780,
(0072)  0x03E0,0x05F0,0x0CF8,0x1878,0x383C,0x381C,0x381C,0x381C,
(0073)  0x1C18,0x0E30,0x07E0,0x0000,0x0000,0x0000,0x0000,0x0000,
(0074)  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x07C0,0x0C70, //"9"
(0075)  0x1838,0x301C,0x701C,0x700E,0x700E,0x700E,0x700E,0x780E,
(0076)  0x380E,0x1C1E,0x0FEC,0x001C,0x0038,0x0030,0x0070,0x00E0,
(0077)  0x0180,0x0F00,0x7800,0x0000,0x0000,0x0000,0x0000,0x0000};
(0078) #pragma end_abs_address
(0079) 
(0080) /*[主函数]*/
(0081) void main()
(0082)  {  
    90A3 9B           seI	
(0083)     unsigned char *RF;        //接收标志
(0084)     unsigned char tmp;        //行号标志
(0085)     asm("SEI");               //关总中断
(0086)     Timer1init();             //调定时器1初始化子程序
    90A4 CD 90F3      jsr	_Timer1init
(0087)     Lcdinit();                //Lcd初始化
    90A7 CD 9182      jsr	_Lcdinit
(0088)     SCIInit();                //SCI初始化
    90AA CD 989F      jsr	_SCIInit
    90AD 95           tSX	
(0089)     asm("CLI");               //开总中断
    90AE 9A           clI	
    90AF 20 3D        bra	0x90EE
(0090)   //[主循环]
(0091)   //循环等待接收
(0092)   while(1)
(0093)   {
    90B1 A6 56        ldA	#86
    90B3 87           pshA	
    90B4 CD 97A0      jsr	_SCISend1
    90B7 A7 01        aiS	#1
    90B9 95           tSX	
(0094)   	//LcdShBigCh(0,0,(INT16U *)(BigChCode_NUM[Num]));
(0095)   	//tmp=SCIRe1(RF);
(0096)   	//if(tmp!=0xFF) Num=tmp;
(0097)   	//SCISend1(Num);
(0098)   	
(0099)   	SCISend1(86);
(0100)   	if(SCIRe1(RF)!=56) continue;
    90BA E6 02        ldA	2,X
    90BC 87           pshA	
    90BD E6 01        ldA	1,X
    90BF 87           pshA	
    90C0 CD 97ED      jsr	_SCIRe1
    90C3 A7 02        aiS	#2
    90C5 95           tSX	
    90C6 B7 41        stA	*__r1
    90C8 A1 38        cmp	#56
    90CA 27 02        beq	0x90CE
    90CC 20 20        bra	0x90EE
(0101)   	YNo=SCIRe1(RF);
    90CE E6 02        ldA	2,X
    90D0 87           pshA	
    90D1 E6 01        ldA	1,X
    90D3 87           pshA	
    90D4 CD 97ED      jsr	_SCIRe1
    90D7 A7 02        aiS	#2
    90D9 95           tSX	
    90DA B7 41        stA	*__r1
    90DC B7 90        stA	0xFFFFFF90
(0102)   	XNo=SCIRe1(RF);
    90DE E6 02        ldA	2,X
    90E0 87           pshA	
    90E1 E6 01        ldA	1,X
    90E3 87           pshA	
    90E4 CD 97ED      jsr	_SCIRe1
    90E7 A7 02        aiS	#2
    90E9 95           tSX	
    90EA B7 41        stA	*__r1
    90EC B7 91        stA	0xFFFFFF91
(0103) 
(0104)   	/*
(0105)   	if(LN==1)     //将接收到的数据放在第一行显示缓冲区
(0106)        SCIReN(16,LcdShowBuff);
(0107)   	else if(LN==2)//将接收到的数据放在第二行显示缓冲区
(0108)   	   SCIReN(16,LcdShowBuff+16);
(0109)   	else if(LN==3)//将接收到的数据放在第三行显示缓冲区
(0110)   	   SCIReN(16,LcdShowBuff+32);
(0111)   	else if(LN==4)//将接收到的数据放在第四行显示缓冲区
(0112)   	   SCIReN(16,LcdShowBuff+48);
(0113)     */
(0114)   }
    90EE 20 C1        bra	0x90B1
    90F0 A7 03        aiS	#3
    90F2 81           rts	
(0115)  }
(0116) 
(0117) /*[内部直接调用子程序存放处]*/
(0118) /*Timer1init:定时器1初始化子程序-----------------------*
(0119) *功能:对定时器1初始化                                  *
(0120) *参数:无                                               *
(0121) *返回:无                                               *
(0122) *-----------------------------------------------------*/
(0123) void Timer1init(void)
(0124)  {
_Timer1init:
    90F3 A6 66        ldA	#102
    90F5 B7 20        stA	0x20
(0125)      //允许溢出中断、不启动计数、分频因子=64
(0126)      T1SC=0b01100110;
(0127)      //计数寄存器初值=0x0000
(0128)      T1CNTH=0x00; T1CNTL=0x00;           
    90F7 3F 21        clr	0x21
    90F9 3F 22        clr	0x22
(0129)      //1/2秒产生1次溢出中断
(0130)      //计数寄存器=1/2×(2457600/64)=1200
(0131)      T1MODH=0x12; T1MODL=0x00;
    90FB A6 12        ldA	#18
    90FD B7 23        stA	0x23
    90FF 3F 24        clr	0x24
(0132)      //允许定时器1计数寄存器计数
(0133)      T1SC&=~(1<<TSTOPBit);
    9101 1B 20        Bclr	5,0x20
    9103 81           rts	
_isrTIMER1:
    9104 8B           pshH	
    9105 B6 40        ldA	*__r0
    9107 87           pshA	
    9108 B6 41        ldA	*__r1
    910A 87           pshA	
    910B B6 42        ldA	*__r2
    910D 87           pshA	
    910E B6 43        ldA	*__r3
    9110 87           pshA	
    9111 B6 44        ldA	*__r4
    9113 87           pshA	
    9114 B6 45        ldA	*__r5
    9116 87           pshA	
    9117 B6 46        ldA	*__r6
    9119 87           pshA	
    911A B6 47        ldA	*__r7
    911C 87           pshA	
    911D B6 48        ldA	*__r8
    911F 87           pshA	
    9120 B6 49        ldA	*__r9
    9122 87           pshA	
    9123 B6 4A        ldA	*__r10
    9125 87           pshA	
    9126 B6 4B        ldA	*__r11
    9128 87           pshA	
    9129 B6 4C        ldA	*__rhi
    912B 87           pshA	
    912C B6 4D        ldA	*__rlo
    912E 87           pshA	
FILE: vectors08.c
(0001) /*-----------------------------------------------------*
(0002) *文件名:vectors08.c                                    *
(0003) *功  能:用于定义中断矢量表                             *
(0004) *-----------------------------------------------------*/
(0005) //[头文件]
(0006) #include "GP32C.H"               //包含头文件
(0007) #include "lcd.h"                 //包含Lcd头文件
(0008) /*[定时器相应寄存器定义]*/   
(0009) #define TOFBit     7             //定时器溢出标志位
(0010) 
(0011) //变量声明
(0012) //得到焦点的行号
(0013) //extern unsigned char FLine;   
(0014) //[外部定义64个字节的Lcd显示缓冲区]
(0015) extern unsigned char LcdShowBuff[];
(0016) extern const INT16U BigNumCode[10][32];
(0017) extern INT8U Num;
(0018) extern unsigned char YNo,XNo;
(0019) extern unsigned int  Data;
(0020) 
(0021) //定时器1中断处理函数
(0022) #pragma interrupt_handler isrTIMER1
(0023) void isrTIMER1(void)
(0024)   {
    912F 9B           seI	
(0025)    asm("SEI");            //关总中断
(0026)    //通过实验,把刷新时间间隔置为1/2秒
(0027)    //定时刷新Lcd显示缓冲中的数据
(0028)    LcdShCh(LcdShowBuff);
    9130 45 0050      ldHX	#0x0050
    9133 89           pshX	
    9134 8B           pshH	
    9135 CD 91C9      jsr	_LcdShCh
    9138 A7 02        aiS	#2
(0029)    //在Lcd上显示自定义32*16点阵的字符
(0030)    LcdShBigNum(YNo,XNo,(INT16U *)BigNumCode,Data);

⌨️ 快捷键说明

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