- 单片机c51汇编语言,51单片机汇编语言
weixin_39927288
单片机c51汇编语言
a)单个与多个LED灯,位操作与字节操作—输出ORG0000HSTART:CLRCMOVP0.0,CMOVP1.1,CMOVP2.2,CMOVP3.3,CCLRACPLAMOVP0,AMOVP1,AMOVP2,AMOVP3,AEND程序说明:可以用7段数码管来代替各端口的8个LED灯,硬件的这种显示方式使得数字表达成为实用。数字显示由数码管的硬件结构与工作原理(7个LED灯的几何变形组合)和数字表
- 51单片机分支程序实验
发疯的熏熏
51单片机实验51单片机嵌入式硬件单片机
一、实验内容1.基本要求掌握51汇编语言调试技巧;实现三个数(R5,R6,R7)(初值为本人班级学号后六位,每两位以HEX格式填入一个寄存器)中找出最大和最小值,最大值存到R3,最小值存到R4;2.扩展要求将数据从R5,R6,R7改为内部数据存储器30H开始的连续多个数据;3.思考要求思考如果数据保存在外部数据存储器中应该如何解决。二.理论分析或算法分析基本要求首先有R5,R6,R7三个数,要从中
- 一款51汇编器ASEM-51
entropyless7
汇编assemblyprocessingmacrosincludewindows
此文是对plit.de/asem-51/(前面可加http://)的翻译。ASEM-51是一款针对Intel-MCS51簇的两遍宏汇编器。(汇编时对源程序扫描两遍)它可以运行在PC(个人电脑)的DOS、Windows和Linux系统下。ASEM-51汇编语言语法基于标准Intel语法,并实现了条件汇编、宏和文件预处理过程(conditionassembly、macros、includefilepr
- 蜂鸣器c51汇编语言,51单片机蜂鸣器奏乐实验汇编代码.doc
少横
蜂鸣器c51汇编语言
ORG0000HLJMPSTARTORG000BHINC20H;中断服务,中断计数器加1MOVTH0,#0D8HMOVTL0,#0EFH;12M晶振,形成10毫秒中断RETISTART:MOVSP,#50HMOVTH0,#0D8HMOVTL0,#0EFHMOVTMOD,#01HMOVIE,#82HMUSIC0:NOPMOVDPTR,#DAT;表头地址送DPTRMOV20H,#00H;中断计数器清0
- 8051汇编语言-延迟函数
Alex-Leung
汇编语言C51单片机汇编语言
目的用代码说明延迟执行原理实现功能:累加器每隔一小段时间,自增加一,增加有限次ORG0000H;始地址AJMPSTART;Jump到StartORG0003H;中断地址START:MOVA,#0000H;立即寻址,将常数送到累加器ALOOP:MOVR0,#0006H;立即寻址,将常数送到寄存器R0DJNZR0,DELAY;如果R0不等于0,R0-1跳到延迟函数AJMPLAST;跳转到LAST;延迟
- c51汇编语言extrn data,51单片机汇编伪指令
weixin_39724004
c51汇编语言extrndata
功能:这一伪指令用来自定义名字,以替换源程序中原来的保留字,替换的保留字均可等效地用于子程序中。格式:ALTNAME保留字自定义名注意:自定义名与保留字之间首字符必须相同。1、BIT功能:指令用于将一个位地址赋给指定的符号名。指令格式:符号名BIT位地址经BIT指令定义过的位符号名不能更改。例如:X_ONBIT60H;定义一个绝对位地址X_OFFBIT24h.2;定义一个绝对位地址BIT---定义
- 外部中断c51汇编语言,用汇编语言要求用外部中断零制作一个流水灯
马虫 医生
外部中断c51汇编语言
满意答案dky15832016.01.11采纳率:46%等级:7已帮助:260人ORG0000HLJMPMAINORG0003HLJMPLEDSTORG0100HMAIN:CLRIT0SETBEASETBEX0MAINLOOP:MOVA,#0FFHCLRCMAINLOOP1:CALLDELAYRLCAMOVP1,ASJMPMAINLOOP1JBP3.2,LEDSTSJMPMAINLOOPLEDST
- BetaFlight统一硬件资源简单配置修改
lida2003
xFlightstm32BetaFlight
BetaFlight统一硬件资源简单配置修改1.源由2.资源配置注意事项3.资源配置文件修改验证步骤Step1:确认硬件修改内容Step2:资源配置文件修改Step3:验证配置文件Step4:提交资源配置文件PR4.参考资料就笔者接触嵌入式设计以来,简单的来说可以分为几个阶段:MCS51汇编语言应用编程单片机C语言应用编程基于微系统C语言应用编程基于(微、宏、混合)内核C语言驱动和应用编程基于Un
- 微机原理与接口技术课程笔记(汇编语言)
饥饿的半导体
笔记单片机汇编语言
目录一、指令系统(〇)寻址方式(7种)(一)数据传输类指令(二)算数运算类指令(三)逻辑操作类指令(四)控制转移类指令(五)位操作类指令二、汇编语言程序设计(一)汇编语言格式(二)伪指令(三)设计步骤一、指令系统单片机能够执行的各种指令的合集称为指令系统,80C51的指令系统共有111条指令80C51汇编语言指令格式操作码操作数1,操作数2;注释MOVA,5BH;(5BH)→A表示将内部存储器5B
- c51汇编语言循环指令,汇编语言循环指令loop
凉凉不凉
c51汇编语言循环指令
loop指令为循环指令,所有的循环指令都是短转移,在对应的机器码中包含转移的位移,而不是目的地址。对IP的修改范围都为:-128--127Loop指令的格式:loop标号((cx)=(cx)-1,如果(cx)≠0,转移到标号处执行。操作:(1)(cx)=(cx)-1(2)判断cx的值是否为0如果cx≠0,跳转到标号出执行(IP)=(IP)+8位位移8位位移=标号处的地址-loop指令后的第一个字节
- 带注释的c51汇编语言,51单片机矩阵键盘控制程序 汇编语言 带详细注释
宁南山
带注释的c51汇编语言
ORG0000H;伪指令,指定一下程序汇编后代码在入程序存储器0000H单元开始的连续单元中,不占有内存AJMPMAIN;短转移指令,转到主程序开始处ORG0050H;伪指令,指定一下程序是从0050H之后连续单元存储MAIN:MOVP1,#0F0H;给P1口赋值,使得低四位为低电平,所有行为低电平,全扫描高四位列ONE:MOVA,P1;将P1口值赋值给寄存器A,读取列值XRLA,#0F0H;将A
- MCS-51单片机I/O端口的存取
mybirdsky
2007-12-2510:38:53MCS-51单片机通常有4个8位I/O端口,向各端口的写数据均写入到对应端口的锁存器中,但对各端口的读操作却有两个方式:读锁存器和读引脚1读-修改-写操作Pn(指P0,P1,P2,P3)在51汇编语言中是特殊的标识符,既代表Pn端口引脚,又代表Pn锁存器(PnSFR)。在MCS-51指令系统中有些指令读锁存器的值,有些指令则读引脚上的值。读锁存器指令是从锁存器中
- 51汇编语言指令集
Danie_wu
汇编
一、符号定义名称说明Rnn=0~7,R0~R7寄存器Direct直接地址,内部数据区的地址RAM(00H~7FH)SFR(80H~FFH)B,ACC,PSW,IP,P3,IE,P2,SCON,P1,TCON,P0@Ri间接寻址Ri=R0、R18051/31RAM地址(00H~7FH)8052/32RAM地址(00H~FFH)#data8位常数#data1616位常数Addr1616位的目标地址Ad
- 51单片机I/O端口的读写操作
yanghuazhou
单片机
51单片机I/O端口的读写操作单片机2009-11-1611:46:30阅读467评论0字号:大中小订阅MCS-51单片机通常有4个8位I/O端口,向各端口的写数据均写入到对应端口的锁存器中,但对各端口的读操作却有两个方式:读锁存器和读引脚1读-修改-写操作Pn(指P0,P1,P2,P3)在51汇编语言中是特殊的标识符,既代表Pn端口引脚,又代表Pn锁存器(PnSFR)。在MCS-51指令系统中有
- #STC89C51# #STC89C52# #AT89S51# #AT89C52#--8051内核单片机原理及汇编(六):指令系统(下)
The Road of Engineer
8051原理及汇编
成就更好的自己目录3.88051汇编语言程序设计举例3.8.1子程序的设计3.8.2查表程序设计3.8.3分支转移程序设计3.8.4循环程序设计3.88051汇编语言程序设计举例介绍常用的汇编语言程序的设计。3.8.1子程序的设计将那些需多次应用的、完成相同的某种基本运算或操作的程序段从整个程序中独立出来,单独编成一个程序段,需要时进行调用。这样的程序段称为子程序。优点:采用子程序可使程序结构简单
- 【入门必看】单片机c语言教程
tyyisyuanyuan
d单片机C语言
单片机c语言编程是基于C语言的单片机编程。单片机的C语言采用C51编译器(简称C51)。由C51产生的目标代码短,运行速度高,存储空间小,符合C语言的ANSI标准,生成的代码遵循Intel目标文件格式,而且可与A51汇编语言PL/M51语言目标代码混合使用。现在就一起来学习单片机C语言的编程知识吧!附录(运算符优先级和结合性等)单片机c语言教程17:C51结构、联合和枚举的使用单片机c语言教程16
- 累加器A与ACC区别
a2102004335
累加器A与ACC区别累加器写成A或ACC在51汇编语言指令中是有区别的。ACC在汇编后的机器码必有一个字节的操作数,是累加器的字节地址E0H,A在汇编后则隐含在指令操作码中。所以在指令中A不能用ACC来替代,而对A的特殊功能寄存器直接寻址和累加器某一位的寻址要用ACC,而不能写成A。例如,指令INCA的机器码是04H,属于寄存器寻址,写成ACC后则成了INCDIRECT的格式,对应机器码为05E0
- 51汇编语言编程,共五个小题
baidu_知道
51汇编语言
http://zhidao.baidu.com/question/359571624将30H单元中的无符号二进制转换为3位BCD码。转换结果的百位、十位、个位分别存放到33H、32H、31H。其他1条回答2011-12-2814:46做而论道|十八级MOVA,30HMOVB,#100DIVAB;除以100MOV33H,A;存放百位数.MOVA,BMOVB,#10DIVAB;除以10MOV32H,A
- 简历里列写的一些专业技能
JoysonQin
嵌入式
笔者13届二本生即将踏上工作生涯,原来在学校也多少经历了一些实践锻炼。下面是我简历里列写的一些专业技能:1.获初级电子工程师认证以及省级和全国C语言计算机等级认证2.对C语言的指针、数组和结构体等有较为深入的理解3.掌握8051单片机C语言开发、熟悉8051汇编语言4.熟悉KEILC51开发环境(编辑、编译、仿真调试)5.熟悉STM32F103系列(ARMCortexM3)微控制器开发6.熟悉
- 74HC164级联控制三个数码管计数
流水荷花
硬件模块
传感器实验一:段码管计数使用MCS-51汇编语言编写程序,完成如下功能:1.使用三个数码管显示十进制数值(001~999,可任意设置);2.每隔1秒,该数值自动减一,直到归零;3.归零后的下一秒,显示一个新的十进制数值(001~999,可任意设置);4.每隔1秒,新数值继续自动减一,直到再次归零;5.重新执行步骤1,循环往复。6.当开关S1按下时,暂停计数;S1松开时,恢复计数。本实验采用3个74
- 51汇编语言指令集
汇编语言
mcs-51 指令速查表 类别 指令格式 功能简述 字节数 周期 数据传送类指令期 MOV A, Rn 寄存器送累加器 1 1 MOV Rn,A 累加器送寄存器 1 1 MOV A, @Ri 内部RAM单元送累加器 1 1 MOV @Ri, A 累加器送内部RAM单元 1 1 MOV A, #data 立即数送累加器 2
- 在进行C51程序设计时如何精确延时的常见方法介绍
行飞子
程序设计单片机应用程序系统软件计数器精确定时
单片机因具有体积小、功能强、成本低以及便于实现分布式控制而有非常广泛的应用领域。单片机开发者在编制各种应用程序时经常会遇到实现精确延时的问题,比如按键去抖、数据传输等操作都要在程序中插入一段或几段延时,时间从几十微秒到几秒。有时还要求有很高的精度,如使用单总线芯片DS18B20时,允许误差范围在十几微秒以内,否则,芯片无法工作。为此我特意的将如何在C51程序中精确延时进行了一个小结。用51汇编语言
- 在进行C51程序设计时如何精确延时的常见方法介绍
行飞子
程序设计应用程序单片机单片机
单片机因具有体积小、功能强、成本低以及便于实现分布式控制而有非常广泛的应用领域。单片机开发者在编制各种应用程序时经常会遇到实现精确延时的问题,比如按键去抖、数据传输等操作都要在程序中插入一段或几段延时,时间从几十微秒到几秒。有时还要求有很高的精度,如使用单总线芯片DS18B20时,允许误差范围在十几微秒以内,否则,芯片无法工作。为此我特意的将如何在C51程序中精确延时进行了一个小结。用51汇编语言
- 51汇编语言指令集
anpan1045535101
mcs-51指令速查表类别指令格式功能简述字节数周期数据传送类指令期MOVA,Rn寄存器送累加器11MOVRn,A累加器送寄存器11MOVA,@Ri内部RAM单元送累加器11MOV@Ri,A累加器送内部RAM单元11MOVA,#data立即数送累加器21MOVA,direct直接寻址单元送累加器21MOVdirect,A累加器送直接寻址单元21MOVRn,#data立即数送寄存器21MOVdire
- 如何从单片机开发过度到嵌入式开发--谈我的经验
zhengmeifu
汇编嵌入式语言产品通讯2010
我从事单片机开发有3年多了,从最早写51汇编语言,到后来用C语言写代码,能移植到各种型号单片机上运行,如PIC,freescal,samsung,STC等单片机我都做过。三星单片机编译系统(IAR)最难接触,劝初学者别用,我刚开始用时搞了快一个月了才懂得使用和仿真调试,最可恨的是每种单片机还要单独做个调试接口。freescal的编译调试系统(IDE:codewarrior)最友善,也最适合初学者
- 实验五:红外控制
mazhijing
职场休闲实验红外控制
实验五:红外控制一、实验目的:1)通过本实验了解红外传感器工作原理,及通过单片机与红外模块配合使用的方法;2)熟练掌握msc-51汇编语言;二、实验内容与要求:编写汇编程序实现通过用微型遥控器发送脉冲信号,红外传感器接收脉冲信号来使继电器动作。三、实验原理:1)硬件说明: 2)工作原理:红外接收头HS0038B其接收频率为38kHz,它直接将38kHz的调制信号调解为基带信号,提供给接收
- 实验五:红外控制
mazhijing
职场休闲实验红外控制
实验五:红外控制一、实验目的:1)通过本实验了解红外传感器工作原理,及通过单片机与红外模块配合使用的方法;2)熟练掌握msc-51汇编语言;二、实验内容与要求:编写汇编程序实现通过用微型遥控器发送脉冲信号,红外传感器接收脉冲信号来使继电器动作。三、实验原理:1)硬件说明: 2)工作原理:红外接收头HS0038B其接收频率为38kHz,它直接将38kHz的调制信号调解为基带信号,提供给接收
- java杨辉三角
3213213333332132
java基础
package com.algorithm;
/**
* @Description 杨辉三角
* @author FuJianyong
* 2015-1-22上午10:10:59
*/
public class YangHui {
public static void main(String[] args) {
//初始化二维数组长度
int[][] y
- 《大话重构》之大布局的辛酸历史
白糖_
重构
《大话重构》中提到“大布局你伤不起”,如果企图重构一个陈旧的大型系统是有非常大的风险,重构不是想象中那么简单。我目前所在公司正好对产品做了一次“大布局重构”,下面我就分享这个“大布局”项目经验给大家。
背景
公司专注于企业级管理产品软件,企业有大中小之分,在2000年初公司用JSP/Servlet开发了一套针对中
- 电驴链接在线视频播放源码
dubinwei
源码电驴播放器视频ed2k
本项目是个搜索电驴(ed2k)链接的应用,借助于磁力视频播放器(官网:
http://loveandroid.duapp.com/ 开放平台),可以实现在线播放视频,也可以用迅雷或者其他下载工具下载。
项目源码:
http://git.oschina.net/svo/Emule,动态更新。也可从附件中下载。
项目源码依赖于两个库项目,库项目一链接:
http://git.oschina.
- Javascript中函数的toString()方法
周凡杨
JavaScriptjstoStringfunctionobject
简述
The toString() method returns a string representing the source code of the function.
简译之,Javascript的toString()方法返回一个代表函数源代码的字符串。
句法
function.
- struts处理自定义异常
g21121
struts
很多时候我们会用到自定义异常来表示特定的错误情况,自定义异常比较简单,只要分清是运行时异常还是非运行时异常即可,运行时异常不需要捕获,继承自RuntimeException,是由容器自己抛出,例如空指针异常。
非运行时异常继承自Exception,在抛出后需要捕获,例如文件未找到异常。
此处我们用的是非运行时异常,首先定义一个异常LoginException:
/**
* 类描述:登录相
- Linux中find常见用法示例
510888780
linux
Linux中find常见用法示例
·find path -option [ -print ] [ -exec -ok command ] {} \;
find命令的参数;
- SpringMVC的各种参数绑定方式
Harry642
springMVC绑定表单
1. 基本数据类型(以int为例,其他类似):
Controller代码:
@RequestMapping("saysth.do")
public void test(int count) {
}
表单代码:
<form action="saysth.do" method="post&q
- Java 获取Oracle ROWID
aijuans
javaoracle
A ROWID is an identification tag unique for each row of an Oracle Database table. The ROWID can be thought of as a virtual column, containing the ID for each row.
The oracle.sql.ROWID class i
- java获取方法的参数名
antlove
javajdkparametermethodreflect
reflect.ClassInformationUtil.java
package reflect;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.Modifier;
import javassist.bytecode.CodeAtt
- JAVA正则表达式匹配 查找 替换 提取操作
百合不是茶
java正则表达式替换提取查找
正则表达式的查找;主要是用到String类中的split();
String str;
str.split();方法中传入按照什么规则截取,返回一个String数组
常见的截取规则:
str.split("\\.")按照.来截取
str.
- Java中equals()与hashCode()方法详解
bijian1013
javasetequals()hashCode()
一.equals()方法详解
equals()方法在object类中定义如下:
public boolean equals(Object obj) {
return (this == obj);
}
很明显是对两个对象的地址值进行的比较(即比较引用是否相同)。但是我们知道,String 、Math、I
- 精通Oracle10编程SQL(4)使用SQL语句
bijian1013
oracle数据库plsql
--工资级别表
create table SALGRADE
(
GRADE NUMBER(10),
LOSAL NUMBER(10,2),
HISAL NUMBER(10,2)
)
insert into SALGRADE values(1,0,100);
insert into SALGRADE values(2,100,200);
inser
- 【Nginx二】Nginx作为静态文件HTTP服务器
bit1129
HTTP服务器
Nginx作为静态文件HTTP服务器
在本地系统中创建/data/www目录,存放html文件(包括index.html)
创建/data/images目录,存放imags图片
在主配置文件中添加http指令
http {
server {
listen 80;
server_name
- kafka获得最新partition offset
blackproof
kafkapartitionoffset最新
kafka获得partition下标,需要用到kafka的simpleconsumer
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.
- centos 7安装docker两种方式
ronin47
第一种是采用yum 方式
yum install -y docker
 
- java-60-在O(1)时间删除链表结点
bylijinnan
java
public class DeleteNode_O1_Time {
/**
* Q 60 在O(1)时间删除链表结点
* 给定链表的头指针和一个结点指针(!!),在O(1)时间删除该结点
*
* Assume the list is:
* head->...->nodeToDelete->mNode->nNode->..
- nginx利用proxy_cache来缓存文件
cfyme
cache
user zhangy users;
worker_processes 10;
error_log /var/vlogs/nginx_error.log crit;
pid /var/vlogs/nginx.pid;
#Specifies the value for ma
- [JWFD开源工作流]JWFD嵌入式语法分析器负号的使用问题
comsci
嵌入式
假如我们需要用JWFD的语法分析模块定义一个带负号的方程式,直接在方程式之前添加负号是不正确的,而必须这样做:
string str01 = "a=3.14;b=2.71;c=0;c-((a*a)+(b*b))"
定义一个0整数c,然后用这个整数c去
- 如何集成支付宝官方文档
dai_lm
android
官方文档下载地址
https://b.alipay.com/order/productDetail.htm?productId=2012120700377310&tabId=4#ps-tabinfo-hash
集成的必要条件
1. 需要有自己的Server接收支付宝的消息
2. 需要先制作app,然后提交支付宝审核,通过后才能集成
调试的时候估计会真的扣款,请注意
- 应该在什么时候使用Hadoop
datamachine
hadoop
原帖地址:http://blog.chinaunix.net/uid-301743-id-3925358.html
存档,某些观点与我不谋而合,过度技术化不可取,且hadoop并非万能。
--------------------------------------------万能的分割线--------------------------------
有人问我,“你在大数据和Hado
- 在GridView中对于有外键的字段使用关联模型进行搜索和排序
dcj3sjt126com
yii
在GridView中使用关联模型进行搜索和排序
首先我们有两个模型它们直接有关联:
class Author extends CActiveRecord {
...
}
class Post extends CActiveRecord {
...
function relations() {
return array(
'
- 使用NSString 的格式化大全
dcj3sjt126com
Objective-C
格式定义The format specifiers supported by the NSString formatting methods and CFString formatting functions follow the IEEE printf specification; the specifiers are summarized in Table 1. Note that you c
- 使用activeX插件对象object滚动有重影
蕃薯耀
activeX插件滚动有重影
使用activeX插件对象object滚动有重影 <object style="width:0;" id="abc" classid="CLSID:D3E3970F-2927-9680-BBB4-5D0889909DF6" codebase="activex/OAX339.CAB#
- SpringMVC4零配置
hanqunfeng
springmvc4
基于Servlet3.0规范和SpringMVC4注解式配置方式,实现零xml配置,弄了个小demo,供交流讨论。
项目说明如下:
1.db.sql是项目中用到的表,数据库使用的是oracle11g
2.该项目使用mvn进行管理,私服为自搭建nexus,项目只用到一个第三方 jar,就是oracle的驱动;
3.默认项目为零配置启动,如果需要更改启动方式,请
- 《开源框架那点事儿16》:缓存相关代码的演变
j2eetop
开源框架
问题引入
上次我参与某个大型项目的优化工作,由于系统要求有比较高的TPS,因此就免不了要使用缓冲。
该项目中用的缓冲比较多,有MemCache,有Redis,有的还需要提供二级缓冲,也就是说应用服务器这层也可以设置一些缓冲。
当然去看相关实现代代码的时候,大致是下面的样子。
[java]
view plain
copy
print
?
public vo
- AngularJS浅析
kvhur
JavaScript
概念
AngularJS is a structural framework for dynamic web apps.
了解更多详情请见原文链接:http://www.gbtags.com/gb/share/5726.htm
Directive
扩展html,给html添加声明语句,以便实现自己的需求。对于页面中html元素以ng为前缀的属性名称,ng是angular的命名空间
- 架构师之jdk的bug排查(一)---------------split的点号陷阱
nannan408
split
1.前言.
jdk1.6的lang包的split方法是有bug的,它不能有效识别A.b.c这种类型,导致截取长度始终是0.而对于其他字符,则无此问题.不知道官方有没有修复这个bug.
2.代码
String[] paths = "object.object2.prop11".split("'");
System.ou
- 如何对10亿数据量级的mongoDB作高效的全表扫描
quentinXXZ
mongodb
本文链接:
http://quentinXXZ.iteye.com/blog/2149440
一、正常情况下,不应该有这种需求
首先,大家应该有个概念,标题中的这个问题,在大多情况下是一个伪命题,不应该被提出来。要知道,对于一般较大数据量的数据库,全表查询,这种操作一般情况下是不应该出现的,在做正常查询的时候,如果是范围查询,你至少应该要加上limit。
说一下,
- C语言算法之水仙花数
qiufeihu
c算法
/**
* 水仙花数
*/
#include <stdio.h>
#define N 10
int main()
{
int x,y,z;
for(x=1;x<=N;x++)
for(y=0;y<=N;y++)
for(z=0;z<=N;z++)
if(x*100+y*10+z == x*x*x
- JSP指令
wyzuomumu
jsp
jsp指令的一般语法格式: <%@ 指令名 属性 =”值 ” %>
常用的三种指令: page,include,taglib
page指令语法形式: <%@ page 属性 1=”值 1” 属性 2=”值 2”%>
include指令语法形式: <%@include file=”relative url”%> (jsp可以通过 include