历史上的今天
返回首页

历史上的今天

今天是:2025年01月29日(星期三)

2018年01月29日 | EM78P153范例程序

2018-01-29 来源:eefocus

;芯片为EM78P153

;P64,P65接晶振,振荡模式为4MHz晶振

;看门狗关,指令周期为2个CLOCK,P63为复位脚

;*******************IO口的定义*********************

PORT6 EQU 0X06

IOC60 EQU 0X06

;**************特殊功能寄存器的定义******************

TCC EQU 0X01

PC EQU 0X02

PSW EQU 0X03

IOCD0 EQU 0X0D

IOCE0 EQU 0X0E

IOCF0 EQU 0X0F

RF EQU 0X0F

;***************用户自定义的寄存器*******************

COUNTER EQU 0X10

CODE1 EQU 0X11

CODE2 EQU 0X12

CODE3 EQU 0X13

CODE4 EQU 0X14

LP_CNT0 EQU 0X15

LP_CNT1 EQU 0X16

TEMP EQU 0X17

TEMPCODE EQU 0X18

REPEAT_COUNTER EQU 0X19

SEND_DATA EQU 0X1A

USER_CODE EQU 0X1B

FLAG EQU 0X1C

;*******************FLAG位定义**********************

C EQU 0

Z EQU 2

TCIF EQU 0

LEAD EQU 0

REPEAT EQU 1

INPUT EQU 1

OUTPUT EQU 0

ORG 0X000

NOP

NOP

NOP

NOP

JMP 0X50

;********************表格转换子程序程序******************

TABLE_CONVER:

CLR TEMP

TABLE_CONVER_1:

MOV A,TEMP

CALL TABLE_CONVERSION_IN

BC PSW,Z

XOR A,CODE3

JBC PSW,Z

JMP EXIT_5

INC TEMP

JMP TABLE_CONVER_1

EXIT_5:

CALL TABLE_CONVERSION_OUT

RET

;**********************表格转换程序IN*********************

TABLE_CONVERSION_IN:

ADD PC,A

RETL 0XD0 ;KEY_1

RETL 0X58 ;KEY_2

RETL 0XD8 ;KEY_3

RETL 0X90 ;KEY_4

RETL 0X18 ;KEY_5

RETL 0X98 ;KEY_6

RETL 0XE0 ;KEY_7

RETL 0X68 ;KEY_8

RETL 0XE8 ;KEY_9

RETL 0X28 ;KEY_0

RETL 0X20 ;KEY_3D

RETL 0XA0 ;KEY_MUTE

RETL 0X40 ;KEY_VOCAL

RETL 0XE2 ;KEY_VOL+

RETL 0XA2 ;KEY_VOL-

RETL 0X52 ;KEY_TUNE FWD

RETL 0X22 ;KEY_TUNE REV

RETL 0X12 ;KEY_STOP

RETL 0X80 ;KEY_<|

RETL 0X82 ;KEY_|>

RETL 0X02 ;KEY_OK

RETL 0XF0 ;KEY_TUNER

RETL 0X78 ;KEY_AM/FM

RETL 0XF8 ;KEY_SAVE

RETL 0X50 ;KEY_AUDIO

;**********************表格转换程序OUT*********************

TABLE_CONVERSION_OUT:

MOV A,TEMP

ADD PC,A

RETL 0X35 ;KEY_1

RETL 0X2D ;KEY_2

RETL 0X25 ;KEY_3

RETL 0X1D ;KEY_4

RETL 0X34 ;KEY_5

RETL 0X2C ;KEY_6

RETL 0X24 ;KEY_7

RETL 0X1C ;KEY_8

RETL 0X33 ;KEY_9

RETL 0X2B ;KEY_0

RETL 0X10 ;KEY_3D

RETL 0X18 ;KEY_MUTE

RETL 0X11 ;KEY_VOCAL

RETL 0X16 ;KEY_VOL+

RETL 0X15 ;KEY_VOL-

RETL 0X28 ;KEY_TUNE FWD

RETL 0X2A ;KEY_TUNE REV

RETL 0X22 ;KEY_STOP

RETL 0X31 ;KEY_<|

RETL 0X21 ;KEY_|>

RETL 0X29 ;KEY_OK

RETL 0X2E ;KEY_TUNER

RETL 0X20 ;KEY_AUX-1

RETL 0X23 ;KEY_AUX-2

RETL 0X17 ;KEY_DVD

 

ORG 0X050

MAIN:

;*********************初始化寄存器**********************

MOV A,@0B00000000

IOW IOCE0

MOV A,@0B11111101

IOW IOCD0

MOV A,@0B00000010

IOW IOC60

MOV A,@0B00000001

MOV PORT6,A

MOV A,@0B00000001

IOW IOCF0

CLR FLAG

CLR TEMPCODE

CLR COUNTER

CLR CODE1

CLR CODE2

CLR CODE3

CLR CODE4

MOV A,@0B10010000

MOV USER_CODE,A

;*********************扫描引导码**********************

SCAN_LEAD_CODE:

JBC PORT6,INPUT

JMP SCAN_LEAD_CODE

CLR FLAG

CLR REPEAT_COUNTER

CLR TEMPCODE

CALL JUDGE_START_CODE

JBS FLAG,LEAD

JMP SCAN_LEAD_CODE

;*********************接收数据**********************

RECEIVE_DATA_PROCEE:

CLR TEMPCODE

CALL RECEIVE_DATA

MOV A,TEMPCODE

MOV CODE1,A

 

MOV A,@0 ;判断用户码是否是00

BC PSW,Z

XOR A,CODE1

JBS PSW,Z

JMP SCAN_LEAD_CODE

 

 

CLR TEMPCODE

CALL RECEIVE_DATA

MOV A,TEMPCODE

MOV CODE2,A

 

MOV A,@0XFF ;判断用户码是否是FF

BC PSW,Z

XOR A,CODE2

JBS PSW,Z

JMP SCAN_LEAD_CODE

 

CLR TEMPCODE

CALL RECEIVE_DATA

MOV A,TEMPCODE

MOV CODE3,A

 

CLR TEMPCODE

CALL RECEIVE_DATA

MOV A,TEMPCODE

MOV CODE4,A

CLR FLAG

;*********************发送数据**********************

SEND_DATA_PROCEE:

JBS USER_CODE,6 ;ST码的次高位反相

JMP COM_1 ;=0

JMP COM_2 ;=1

COM_1:

BS USER_CODE,6

JMP VVV

COM_2:

BC USER_CODE,6

JMP VVV

VVV:

CALL TABLE_CONVER ;调用码表转换子程序

MOV CODE3,A

REP:

CALL TRANSMIT_DATA

BS PORT6,OUTPUT

CALL JUDGE_REPEAT_CODE ;扫描引导码是否在重复?

JBS FLAG,LEAD

JMP SCAN_LEAD_CODE

JBC FLAG,REPEAT

JMP REP ;引导码是重复,继续扫描

JMP RECEIVE_DATA_PROCEE ;引导码不重复,去接收新数据

;****************引导码的检测子程序*****************

JUDGE_START_CODE:

CLR COUNTER ;清计数器

JUDGE_START_CODE_0:

JBC PORT6,INPUT

JMP NO_HIGH

CALL DELAY0.5MS

JBC PORT6,INPUT

JMP NO_HIGH

INC COUNTER

JMP JUDGE_START_CODE_0

NO_HIGH:

MOV A,COUNTER

BC PSW,C

SUB A,@20 ;20-A

JBS PSW,C

JMP EXIT_0 ;C=1,COUNTER>20

MOV A,COUNTER

BC PSW,C

SUB A,@16 ;16-A

JBC PSW,C

JMP EXIT_0 ;C=0,COUNTER<16

BS FLAG,LEAD

EXIT_0:

JBC PORT6,INPUT

JMP EXIT_0

INC REPEAT_COUNTER

RET

;****************接收数据子程序**********************

RECEIVE_DATA:


MOV A,@8

MOV COUNTER,A

MOV A,@0B00100000

CONTW ;停止记数

CONTINUE_1:

JBS PORT6,INPUT

JMP CONTINUE_1

CLR TCC

MOV A,@0B00000100

CONTW ;TCC开始记数

CONTINUE_2:

MOV A,TCC

MOV TEMP,A

BC PSW,C

SUB A,@250

JBS PSW,C

JMP SCAN_LEAD_CODE ;C=0,TCC>250

 

JBC PORT6,INPUT

JMP CONTINUE_2

MOV A,TCC

MOV TEMP,A

BC PSW,C

SUB A,@60;142

JBC PSW,C

JMP X1 ;C=1,TCC<60

JMP X2 ;C=0,TCC>60

X1:

BC TEMPCODE,0

JMP EXIT_1

X2:

BS TEMPCODE,0

JMP EXIT_1

EXIT_1:

DJZ COUNTER

JMP HH

MOV A,@0B00100000

CONTW ;停止记数

RET

HH:

BC PSW,C

RLC TEMPCODE

JMP CONTINUE_1

 

;****************发送数据子程序**********************

TRANSMIT_DATA:

MOV A,@4

MOV COUNTER,A

MOV A,USER_CODE ;@0B10010000 ;发送ST的用户码

MOV SEND_DATA,A

CYCLE_1:

JBS SEND_DATA,7

JMP SEND_P_0

JMP SEND_P_1

SEND_P_1:

CALL SEND_CODE_1

JMP EXIT_3

SEND_P_0:

CALL SEND_CODE_0

JMP EXIT_3

EXIT_3:

RLC SEND_DATA

DJZ COUNTER

JMP CYCLE_1

 

MOV A,@8

MOV COUNTER,A

MOV A,CODE3

MOV SEND_DATA,A

RLC SEND_DATA

CYCLE_2:

JBS SEND_DATA,7

JMP SEND_Q_0

JMP SEND_Q_1

SEND_Q_1:

CALL SEND_CODE_1

JMP EXIT_4

SEND_Q_0:

CALL SEND_CODE_0

JMP EXIT_4

EXIT_4:

RLC SEND_DATA

DJZ COUNTER

JMP CYCLE_2

RET

;***************发送数据"1"子程序********************

SEND_CODE_1:

MOV A,@0B00100000

CONTW ;停止记数

MOV A,@0B00000001 ;允许TCC中断


IOW IOCF0

MOV A,@35 ;引导脉冲的预置值

MOV TCC,A

MOV A,@0B00000001 ;选择预分频比为1:4

CONTW

BC PORT6,OUTPUT

WAIT_1:

JBS RF,TCIF

JMP WAIT_1

MOV A,@0B00100000

CONTW ;停止记数

BC RF,TCIF

MOV A,@32 ;代码"1"的预置值

MOV TCC,A

MOV A,@0B00000101 ;选择预分频比为1:64

CONTW

BS PORT6,OUTPUT

WAIT_2:

JBS RF,TCIF

JMP WAIT_2

BC RF,TCIF

MOV A,@0B00100000

CONTW ;停止记数

RET

;***************发送数据"0"子程序********************

SEND_CODE_0:

MOV A,@0B00100000

CONTW ;停止记数

MOV A,@0B00000001 ;允许TCC中断

IOW IOCF0

MOV A,@35 ;引导脉冲的预置值

MOV TCC,A

MOV A,@0B00000001 ;选择预分频比为1:4

CONTW

BC PORT6,OUTPUT

WAIT_3:

JBS RF,TCIF

JMP WAIT_3

MOV A,@0B00100000

CONTW ;停止记数

BC RF,TCIF

 

MOV A,@114 ;代码"0"的预置值

MOV TCC,A

MOV A,@0B00000101 ;选择预分频比为1:64

CONTW

BS PORT6,OUTPUT

WAIT_4:

JBS RF,TCIF

JMP WAIT_4

NOP

BC RF,TCIF

MOV A,@0B00100000

CONTW ;停止记数

RET

;****************重复码的检测子程序******************

JUDGE_REPEAT_CODE:

CLR COUNTER ;清计数器

CLR FLAG

JUDGE_REPEAT_CODE_0:

JBC PORT6,INPUT

JMP JUDGE_REPEAT_CODE_0

SS:

JBC PORT6,INPUT

JMP JUDGE_REPEAT_CODE_1

CALL DELAY0.5MS

JBC PORT6,INPUT

JMP JUDGE_REPEAT_CODE_1

INC COUNTER

JMP SS

JUDGE_REPEAT_CODE_1:

MOV A,COUNTER

BC PSW,C

SUB A,@20 ;20-A

JBS PSW,C

JMP EXIT_2 ;C=1,COUNTER>20

MOV A,COUNTER

BC PSW,C

SUB A,@16 ;16-A

JBC PSW,C

JMP EXIT_2 ;C=0,COUNTER<16

BS FLAG,LEAD

JMP JUDGE_REPEAT_CODE_2

EXIT_2:

RET

JUDGE_REPEAT_CODE_2:

CLR COUNTER ;清计数器

JUDGE_REPEAT_CODE_3:

JBS PORT6,INPUT

JMP JUDGE_REPEAT_CODE_4

CALL DELAY0.5MS

JBS PORT6,INPUT

JMP JUDGE_REPEAT_CODE_4

INC COUNTER

JMP JUDGE_REPEAT_CODE_3

JUDGE_REPEAT_CODE_4:

MOV A,COUNTER

BC PSW,C

SUB A,@7 ;7-A

JBS PSW,C

JMP NO_REPEAT ;C=0,COUNTER>7

JMP YES_REPEAT ;C=1,COUNTER<7

NO_REPEAT:

BC FLAG,REPEAT

CLR REPEAT_COUNTER

RET

YES_REPEAT:

BS FLAG,REPEAT

INC REPEAT_COUNTER

RET


;****************延时0.5mS子程序*********************

DELAY0.5MS:

MOV A,@2

MOV LP_CNT0,A

DELAY0.5MS_1:

MOV A,@82

MOV LP_CNT1,A

DELAY0.5MS_2:

NOP

NOP

NOP

DJZ LP_CNT1

JMP DELAY0.5MS_2

DJZ LP_CNT0

JMP DELAY0.5MS_1

RET


推荐阅读

史海拾趣

ZTE高新兴(Gosuncn)公司的发展小趣事

对于J-107B型高频双头式热合机电路,网友可能提出的问题及回答如下:

问题一:J-107B型高频双头式热合机的主要工作原理是什么?

回答:J-107B型高频双头式热合机的主要工作原理是利用高频电场作用于塑料材料,使其内部分子发生极化现象,并在高频电场的快速变化下,这些被极化的分子以同样极快的速度跟随变化,从而因介电损耗产生大量的热量。这些热量聚集并达到高温,使塑料材料熔化。在熔化状态下,通过施加一定的压力,可以使两块或多块塑料熔合粘结在一起,实现高频热合的目的。

问题二:J-107B型高频双头式热合机的电路结构有哪些主要部分?

回答:J-107B型高频双头式热合机的电路结构主要包括以下几个主要部分:

  1. 高频振荡电路:这是热合机的核心部分,通常由电子管(如Fu-33中功率发射电子管)组成,用于产生高频电场。电子管通过自激振荡方式工作,利用电子管的授间电容作振荡回路的主电窖,组成考毕兹振荡器。

  2. 时间控制电路:用于控制热合的时间,通常由电子管(如6P6P电子管)和时间控制元件(如RP1和RP2调节器)组成。通过调整这些元件,可以精确地控制热合过程中的各个阶段时间,如预热时间、熔合时间和冷却时间。

  3. 电源电路:为整个热合机提供稳定的电源供应,确保高频振荡电路和时间控制电路的正常工作。电源电路需要满足一定的电压和电流要求,通常要求电源电压在190~230V范围内。

  4. 保护电路:为了防止电路过载、短路等异常情况的发生,热合机还配备了保护电路。这些电路能够在检测到异常情况时迅速切断电源,保护设备和操作人员的安全。

问题三:如何维护和保养J-107B型高频双头式热合机?

回答:为了保持J-107B型高频双头式热合机的良好性能和延长使用寿命,需要进行定期的维护和保养。以下是一些建议:

  1. 定期检查电源线和插头:确保它们没有损坏或松动,避免电源问题导致的故障。

  2. 清洁机器内部:定期清理机器内部的灰尘和杂物,保持机器内部的清洁和干燥。这有助于防止电子元件因灰尘积累而损坏。

  3. 检查电子元件:定期检查高频振荡电路和时间控制电路中的电子元件是否损坏或老化。如有需要,应及时更换以确保电路的正常工作。

  4. 调整和维护模具:模具是热合机的关键部件之一,需要定期进行调整和维护。确保模具的接合位置准确、平整,避免模具损坏导致的热合质量下降。

  5. 注意安全操作:在操作过程中,应注意安全用电和防火措施。避免在潮湿或腐蚀性气体环境下使用热合机,以防止触电或设备损坏。

  6. 定期校准:对于需要精确控制时间或温度的热合机,应定期进行校准以确保其准确性。这有助于提高热合质量和生产效率。

ETEQ Microsystems Inc公司的发展小趣事

随着市场的不断发展,ETEQ Microsystems Inc意识到只有不断创新才能保持竞争力。公司投入大量资源进行研发,终于在XXXX年成功研发出业界首款集成了人工智能算法的微型传感器。这一产品不仅提高了数据的处理效率,还大大降低了能耗,为物联网领域带来了革命性的变化。

泽耀科技(Ashining)公司的发展小趣事

泽耀科技(Ashining)在创立之初,面临着资金短缺、市场竞争激烈和技术难题等挑战。然而,公司的创始人凭借对电子行业的深刻理解和坚定信念,带领团队攻坚克难,不断研发创新。他们深入市场调研,准确把握消费者需求,成功推出了一款具有竞争力的电子产品,为公司的发展打开了局面。

DAYA公司的发展小趣事

随着全球化趋势的加速,大雅智能积极实施国际化战略,拓展海外市场。通过与国外知名企业的合作与交流,大雅智能引进先进技术和管理经验,不断提升自身的核心竞争力。同时,大雅智能还积极参加国际展览和论坛活动,展示其创新成果和产品实力。这些努力让大雅智能在国际舞台上崭露头角,为全球消费者提供更多优质的电子产品。

DURABLE公司的发展小趣事

DURABLE公司成立于20世纪90年代初,最初是一家专注于电子材料研发的小型科技公司。在创始人李博士的带领下,DURABLE不断投入研发资金,积极探索新材料在电子行业的应用。经过数年的努力,公司成功开发出一种具有超高耐用性和稳定性的新型电子材料,这一创新为DURABLE赢得了业界的广泛认可。随着技术的不断成熟,DURABLE的产品逐渐应用于智能手机、平板电脑等高端电子产品中,公司的市场份额也逐年攀升。

General Microcircuits Corp公司的发展小趣事
在单电源供电情况下,PSRR对于抑制电源噪声尤为重要。

问答坊 | AI 解惑

电子工程师,别拿一分钱不当回事

一分钱,在现在物价飞涨的年代,早已经退出了货币交流的的历史舞台,成为财务意义上的最小计量单位。当年“我在马路边,捡到一分钱”的童谣,不会再发生了,一分钱,已经买不了任何东西。 一分钱,已经真的不值钱了吗?让我们来看年看电子物料的 ...…

查看全部问答>

【ADC学习】ADC前端设计过程合集

设计步骤一:https://bbs.eeworld.com.cn/thread-96897-1-1.html 设计步骤二:https://bbs.eeworld.com.cn/thread-96899-1-1.html 设计步骤三:https://bbs.eeworld.com.cn/thread-96902-1-1.html 设计步骤四:https://bbs.eeworld.com.cn/threa ...…

查看全部问答>

CE6.0编译出错问题

我是将BSP包中的LCD显示部分文件全部拷到另一个目录下,然后在那个目录下的一个文件里面包含了个头文件(这个头文件在那个LCD显示文件中有定义的),也更改了source文件路径的,然后编译出现一大堆错误。sysgen了也不行的。请问是什么原因? …

查看全部问答>

了解工业传感器的高手请进

    小弟最近在做一个课题,需要了解一些工业传感器,请各位高手列一些传感器型号出来。     具体要求:         1、单个价位在250元以下。         2、工业 ...…

查看全部问答>

有需要JLINK的吗 ?

65元一个 http://item.taobao.com/item_detail.jhtml?item_id=76d334109aebd88799ad63cdbcce7d08&x_id=db2…

查看全部问答>

VC#智能设备应用程序如何能使用vc2005开发的智能设备ocx? 高手指点

VC#智能设备应用程序如何能使用vc2005开发的智能设备ocx? 高手指点…

查看全部问答>

EVC 中选择默认设备下拉菜单选项中只有Emulator没有Device

以前写的程序在PPC 2003中模拟,现在更换了设备,新设备系统是WinCE .net 5.0 ,编译时选择STANDARDSDK ,Win32(WCE ARMV4)Release可是Select default device选项中只有STANDARDSDK Emulator,没有device选择,新设备可以和PC机同步,我想编译后 ...…

查看全部问答>

实现低功耗有哪些常用方法

我在做一个智能电子体温计,要求实现低功耗,系统电流小于0.3毫安。不能用贴片元件,我知道的方法就是所有三极管全用mos管,还有其他方法么?!…

查看全部问答>

请教电感式接近传感器接口电路设计

请教大家一个问题:采用电感式接近传感器对铁磁金属靶标进行到位检测,传感器初始电感值是4.85mH,设置的接近门限电感值是5mH,要求接口电路输出的是离散电平信号,该如何设计?…

查看全部问答>