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

📄 tg1286~1.lst

📁 为日本瑞萨苏州分公司做的一个温控系统
💻 LST
📖 第 1 页 / 共 4 页
字号:
__text_start:
__start:
    8041 45 0240      ldHX	#0x0240
    8044 94           tXS	
    8045 CD 8076      jsr	__HC08Setup
    8048 45 008F      ldHX	#0x008F
    804B 65 008F      cpHX	#0x008F
    804E 27 06        beq	0x8056
    8050 6F 00        clr	0,X
    8052 AF 01        aiX	#1
    8054 20 F5        bra	0x804B
    8056 45 004F      ldHX	#0x004F
    8059 94           tXS	
    805A 45 8000      ldHX	#0x8000
    805D 65 8041      cpHX	#0x8041
    8060 27 0B        beq	0x806D
    8062 E6 00        ldA	0,X
    8064 9EE7 00      stA	0,S
    8067 AF 01        aiX	#1
    8069 A7 01        aiS	#1
    806B 20 F0        bra	0x805D
    806D 45 0240      ldHX	#0x0240
    8070 94           tXS	
    8071 CD 809B      jsr	_main
_exit:
    8074 20 FE        bra	0x8074
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:
    8076 A6 01        ldA	#1
    8078 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模块
    807A A6 3D        ldA	#61
    807C 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             
    807E 3F 36        clr	0x36
(0026)    PCTL=0x01;         //②将P、E写入PTCL,置VCO的参考频率
    8080 A6 01        ldA	#1
    8082 B7 36        stA	0x36
(0027)                       //  为2             
(0028)    PMSH=0x01;         //③将N写入PMSH、PMSL,置VCO的倍
    8084 A6 01        ldA	#1
    8086 B7 38        stA	0x38
(0029)                       //  频因子为$12C          
(0030)    PMSL=0x2C;             
    8088 A6 2C        ldA	#44
    808A B7 39        stA	0x39
(0031)    PMRS=0b10000000;   //④将L写入PMRS,置VCO的输出频率范
    808C A6 80        ldA	#-128
    808E B7 3A        stA	0x3A
(0032)                       //  围系数为$80   
(0033)    PRDS=0x01;         //⑤将R写入PRDS
    8090 A6 01        ldA	#1
    8092 B7 3B        stA	0x3B
(0034)    PCTL|=(1<<5);      //⑥置PCTL.PLLON=1,启动PLL电路  
    8094 1A 36        Bset	5,0x36
(0035)    PBWC|=(1<<7);      //⑦PBWC自动带宽控制位=1,选择自动
    8096 1E 37        Bset	7,0x37
(0036)                       //  控制方式  
(0037)    PCTL|=(1<<4);      //⑧PCTL.BCS=1,选择PLL电路为时钟源
    8098 18 36        Bset	4,0x36
    809A 81           rts	
_main:
  RF                   --> X+0
  LN                   --> X+2
    809B A7 FD        aiS	#-3
    809D 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) #define TSTOPBit   5      //定时器计数停止位
(0017) //定时器初始化函数声明
(0018) void Timer1init(void);
(0019) //SCI初始化
(0020) extern void SCIInit(void);
(0021) //全局变量声明
(0022)   unsigned char FLine=0;  //得到焦点的行号
(0023)   //[外部定义64个字节的Lcd显示缓冲区]
(0024)   unsigned char LcdShowBuff[64]="苏州大学        "
(0025)                                 "单片机实验室    "                
(0026)                                 "http://sumcu.s  "                
(0027)                                 "uda.edu.cn      ";
(0028) //*====================================================*
(0029) /*[主函数]*/
(0030) void main()
(0031)  {  
    809E 9B           seI	
(0032)     unsigned char *RF;        //接收标志
(0033)     unsigned char LN;         //行号标志
(0034)     asm("SEI");               //关总中断
(0035)     Timer1init();             //调定时器1初始化子程序
    809F CD 8132      jsr	_Timer1init
(0036)     Lcdinit();                //Lcd初始化
    80A2 CD 81AC      jsr	_Lcdinit
(0037)     SCIInit();                //SCI初始化
    80A5 CD 8723      jsr	_SCIInit
    80A8 95           tSX	
(0038)     asm("CLI");               //开总中断
    80A9 9A           clI	
    80AA CC 812C      jmp	0x812C
(0039)   //[主循环]
(0040)   //循环等待接收
(0041)   while(1)
(0042)   {
    80AD A6 56        ldA	#86
    80AF 87           pshA	
    80B0 CD 8624      jsr	_SCISend1
    80B3 A7 01        aiS	#1
    80B5 95           tSX	
(0043)   	SCISend1(86);
(0044)   	if(SCIRe1(RF)!=56) continue;
    80B6 E6 01        ldA	1,X
    80B8 87           pshA	
    80B9 F6           ldA	0,X
    80BA 87           pshA	
    80BB CD 8671      jsr	_SCIRe1
    80BE A7 02        aiS	#2
    80C0 95           tSX	
    80C1 B7 41        stA	*__r1
    80C3 A1 38        cmp	#56
    80C5 27 02        beq	0x80C9
    80C7 20 63        bra	0x812C
(0045)   	LN=SCIRe1(RF);
    80C9 E6 01        ldA	1,X
    80CB 87           pshA	
    80CC F6           ldA	0,X
    80CD 87           pshA	
    80CE CD 8671      jsr	_SCIRe1
    80D1 A7 02        aiS	#2
    80D3 95           tSX	
    80D4 B7 41        stA	*__r1
    80D6 E7 02        stA	2,X
(0046)   	if(LN==1)     //将接收到的数据放在第一行显示缓冲区
    80D8 A1 01        cmp	#1
    80DA 26 10        bne	0x80EC
(0047)        SCIReN(16,LcdShowBuff);
    80DC 45 004F      ldHX	#0x004F
    80DF 89           pshX	
    80E0 8B           pshH	
    80E1 A6 10        ldA	#16
    80E3 87           pshA	
    80E4 CD 86D0      jsr	_SCIReN
    80E7 A7 03        aiS	#3
    80E9 95           tSX	
    80EA 20 40        bra	0x812C
(0048)   	else if(LN==2)//将接收到的数据放在第二行显示缓冲区
    80EC E6 02        ldA	2,X
    80EE A1 02        cmp	#2
    80F0 26 10        bne	0x8102
(0049)   	   SCIReN(16,LcdShowBuff+16);
    80F2 45 005F      ldHX	#0x005F
    80F5 89           pshX	
    80F6 8B           pshH	
    80F7 A6 10        ldA	#16
    80F9 87           pshA	
    80FA CD 86D0      jsr	_SCIReN
    80FD A7 03        aiS	#3
    80FF 95           tSX	
    8100 20 2A        bra	0x812C
(0050)   	else if(LN==3)//将接收到的数据放在第三行显示缓冲区
    8102 E6 02        ldA	2,X
    8104 A1 03        cmp	#3
    8106 26 10        bne	0x8118
(0051)   	   SCIReN(16,LcdShowBuff+32);
    8108 45 006F      ldHX	#0x006F
    810B 89           pshX	
    810C 8B           pshH	
    810D A6 10        ldA	#16
    810F 87           pshA	
    8110 CD 86D0      jsr	_SCIReN
    8113 A7 03        aiS	#3
    8115 95           tSX	
    8116 20 14        bra	0x812C
(0052)   	else if(LN==4)//将接收到的数据放在第四行显示缓冲区
    8118 E6 02        ldA	2,X
    811A A1 04        cmp	#4
    811C 26 0E        bne	0x812C
(0053)   	   SCIReN(16,LcdShowBuff+48);
    811E 45 007F      ldHX	#0x007F
    8121 89           pshX	
    8122 8B           pshH	
    8123 A6 10        ldA	#16
    8125 87           pshA	
    8126 CD 86D0      jsr	_SCIReN
    8129 A7 03        aiS	#3
    812B 95           tSX	
(0054)   }
    812C CC 80AD      jmp	0x80AD
    812F A7 03        aiS	#3
    8131 81           rts	
(0055)  }
(0056) 
(0057) /*[内部直接调用子程序存放处]*/
(0058) /*Timer1init:定时器1初始化子程序-----------------------*
(0059) *功能:对定时器1初始化                                  *
(0060) *参数:无                                               *
(0061) *返回:无                                               *
(0062) *-----------------------------------------------------*/
(0063) void Timer1init(void)
(0064)  {
_Timer1init:
    8132 A6 66        ldA	#102
    8134 B7 20        stA	0x20
(0065)      //允许溢出中断、不启动计数、分频因子=64
(0066)      T1SC=0b01100110;
(0067)      //计数寄存器初值=0x0000
(0068)      T1CNTH=0x00; T1CNTL=0x00;           
    8136 3F 21        clr	0x21
    8138 3F 22        clr	0x22
(0069)      //1/2秒产生1次溢出中断
(0070)      //计数寄存器=1/2×(2457600/64)=1200
(0071)      T1MODH=0x12; T1MODL=0x00;
    813A A6 12        ldA	#18
    813C B7 23        stA	0x23
    813E 3F 24        clr	0x24
(0072)      //允许定时器1计数寄存器计数
(0073)      T1SC&=~(1<<TSTOPBit);
    8140 1B 20        Bclr	5,0x20
    8142 81           rts	
_isrTIMER1:
    8143 8B           pshH	
    8144 B6 40        ldA	*__r0
    8146 87           pshA	
    8147 B6 41        ldA	*__r1
    8149 87           pshA	
    814A B6 42        ldA	*__r2
    814C 87           pshA	
    814D B6 43        ldA	*__r3
    814F 87           pshA	
    8150 B6 44        ldA	*__r4
    8152 87           pshA	
    8153 B6 45        ldA	*__r5
    8155 87           pshA	
    8156 B6 46        ldA	*__r6
    8158 87           pshA	
    8159 B6 47        ldA	*__r7
    815B 87           pshA	
    815C B6 48        ldA	*__r8
    815E 87           pshA	
    815F B6 49        ldA	*__r9
    8161 87           pshA	
    8162 B6 4A        ldA	*__r10
    8164 87           pshA	
    8165 B6 4B        ldA	*__r11
    8167 87           pshA	
    8168 B6 4C        ldA	*__rhi
    816A 87           pshA	
    816B B6 4D        ldA	*__rlo
    816D 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)   extern unsigned char FLine;   
(0013)   //[外部定义64个字节的Lcd显示缓冲区]
(0014)   extern unsigned char LcdShowBuff[64];
(0015) 
(0016) //定时器1中断处理函数
(0017) #pragma interrupt_handler isrTIMER1
(0018) void isrTIMER1(void)
(0019)   {
    816E 9B           seI	
(0020)    asm("SEI");            //关总中断
(0021)    //通过实验,把刷新时间间隔置为1/2秒
(0022)    //定时刷新Lcd显示缓冲中的数据
(0023)    LcdShCh(LcdShowBuff);
    816F 45 004F      ldHX	#0x004F
    8172 89           pshX	
    8173 8B           pshH	
    8174 CD 81ED      jsr	_LcdShCh
    8177 A7 02        aiS	#2
    8179 95           tSX	
(0024)    //FLine为行号;1表示有边框;0为无边框
(0025)    //LcdShGrRe(FLine,GrEnable);
(0026)    //在指定位置画圆
(0027)    //LcdShGrCil(31,64,10,4,GrEnable);
(0028)    //LcdShGrCil(31,64,30,30,GrEnable);
(0029)    //在指定位置显示点
(0030)    //LcdShGr1P(31,64);
(0031)    //清除定时器溢出标志位
(0032)    T1SC&=~(1<<TOFBit);
    817A 1F 20        Bclr	7,0x20
(0033)    asm("CLI");            //开总中断
    817C 9A           clI	
    817D 86           pulA	
    817E B7 4D        stA	*__rlo
    8180 86           pulA	
    8181 B7 4C        stA	*__rhi
    8183 86           pulA	
    8184 B7 4B        stA	*__r11
    8186 86           pulA	
    8187 B7 4A        stA	*__r10
    8189 86           pulA	
    818A B7 49        stA	*__r9
    818C 86           pulA	
    818D B7 48        stA	*__r8
    818F 86           pulA	
    8190 B7 47        stA	*__r7
    8192 86           pulA	
    8193 B7 46        stA	*__r6
    8195 86           pulA	
    8196 B7 45        stA	*__r5
    8198 86           pulA	
    8199 B7 44        stA	*__r4
    819B 86           pulA	
    819C B7 43        stA	*__r3
    819E 86           pulA	
    819F B7 42        stA	*__r2
    81A1 86           pulA	
    81A2 B7 41        stA	*__r1
    81A4 86           pulA	
    81A5 B7 40        stA	*__r0
    81A7 8A           pulH	
    81A8 80           rti	
_isrDummy:
    81A9 8B           pshH	
(0034)   }
(0035) 
(0036) //未定义的中断处理函数,本函数不能删除
(0037) #pragma interrupt_handler isrDummy  
(0038) void isrDummy(void) 
(0039)   {
    81AA 8A           pulH	
    81AB 80           rti	
FILE: lcd.c
(0001) /*-----------------------------------------------------*
(0002) *文件描述:本文件包含了液晶显示相关子程序,分别为:       *  
(0003) *(1)Lcdinit:液晶初始化子程序                           *
(0004) *(2)LcdShCh:在液晶显示屏上显示字符数据                 *
(0005) *(3)LcdShGrRe:在Lcd的指定行上显示或取消矩型边框        *
(0006) *(4)LcdShGrCil:在Lcd上显示或取消空心圆型               *
(0007) *-----------------------------------------------------*/
(0008) 
(0009) //包含头文件 
(0010) #include "gp32c.h"
(0011) #include "lcd.h"
(0012) //定义延时子程序
(0013) #define delay1600us DelayTimes(4000)     //延时>1.6ms
(0014) #define delay72us   DelayTimes(30)	      //延时>72us
(0015) #define delay40ms   DelayTimes(10000)     //延时>40ms
(0016) //内部调用函数声明
(0017) void DelayTimes(unsigned int);         //延时指定时间
(0018) void Wtite_Command(unsigned char);//将控制命令写入Lcd
(0019) void Wtite_Data(unsigned char);       //将数据写入Lcd
(0020) void LcdShGrClr(void);          //在Lcd上清图形显示屏
(0021) //在Lcd指定位置上设置线型16个点的显示
(0022) void LcdShGr16P(unsigned char,unsigned char,int);
(0023) //在Lcd指定位置上画1个点
(0024) void LcdShGr1P(unsigned char,unsigned char);
(0025) 
(0026) //==================[Lcd初始化操作]==========================
(0027) /*Lcdinit:初始化液晶-----------------------------------*
(0028) *功  能:初始化液晶,设置显示方式,清屏、C自动+1         *
(0029) *参  数:无                                             *
(0030) *返  回:无                                             *
(0031) *-----------------------------------------------------*/
(0032) void Lcdinit(void)
(0033) {
_Lcdinit:
    81AC A6 07        ldA	#7
    81AE B7 06        stA	0x06
(0034)     LCD_CtrlPortDDR=0x07;      //控制口低三位设置为输出
(0035) 	LCD_DataPortDDR=0xff;      //数据口设置为输出
    81B0 A6 FF        ldA	#-1
    81B2 B7 05        stA	0x05
(0036) 	//[Lcd初始化]
(0037) 	delay40ms;                 //延时>40ms
    81B4 45 2710      ldHX	#0x2710
    81B7 89           pshX	
    81B8 8B           pshH	
    81B9 CD 85F9      jsr	_DelayTimes
    81BC A7 02        aiS	#2
(0038)     Wtite_Command(0b00110000); //8位数据,基本指令
    81BE A6 30        ldA	#48
    81C0 87           pshA	
    81C1 CD 85C3      jsr	_Wtite_Command
    81C4 A7 01        aiS	#1
(0039) 	Wtite_Command(0b00001100); //开显示
    81C6 A6 0C        ldA	#12

⌨️ 快捷键说明

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