历史上的今天
返回首页

历史上的今天

今天是:2025年01月27日(星期一)

正在发生

2018年01月27日 | em78p153驱动1602源程序

2018-01-27 来源: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,@60142  
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  


推荐阅读

史海拾趣

DOMINANT公司的发展小趣事

随着公司业务的不断发展,统明亮开始积极拓展全球市场。它通过与国内外知名企业的合作,不断提升自身的品牌影响力和市场竞争力。同时,统明亮还积极参加各类国际展会和交流活动,与全球各地的客户建立了紧密的合作关系。这些努力使得统明亮在全球LED市场中的份额不断扩大,其品牌影响力也得到了进一步提升。

请注意,由于篇幅限制,以上仅为三个简要故事。如果需要更多关于DOMINANT公司的发展故事,建议查阅相关报道和资料。

FUJITSU(富士通)公司的发展小趣事

在LED产业蓬勃发展的背景下,统明亮(DOMINANT)公司在2000年应运而生。它的诞生源于欧司朗(OSRAM)在马六甲工厂的分拆,加上马来西亚财团的加持,这家新公司迅速崭露头角。统明亮公司从成立之初就专注于LED技术的研发和生产,凭借其卓越的技术实力和创新能力,逐渐在电子行业中树立了良好的口碑。经过数年的不懈努力,统明亮在全球贴片式LED领域取得了领先地位,特别是在车用LED封装领域,其产品质量和技术水平均处于行业前列。

Fibrefab Limited公司的发展小趣事

随着市场环境的不断变化和竞争的加剧,Fibrefab面临着前所未有的挑战。为了应对这些挑战,Fibrefab开始加快转型升级的步伐。公司加大了对新兴技术的研发投入,如5G、物联网和云计算等,以打造更加智能、高效和灵活的光纤通讯解决方案。同时,Fibrefab还积极优化生产流程和提高产品质量,以满足客户对高性能、高品质产品的需求。

Daniels Manufacturing公司的发展小趣事

自1946年成立以来,Daniels Manufacturing Corporation一直致力于为军事和电信行业提供高质量的工具系统和技术。在20世纪70年代,DMC经历了一次重大的技术突破,成功研发出一种新型的手动压接工具,该工具能够精确、高效地处理各种电子连接器。这一技术的突破为DMC赢得了市场的认可,也为其后续的产品线扩展奠定了基础。在接下来的几十年里,DMC不断投入研发,推出了包括电动、气动、液压压接工具在内的多种产品,广泛应用于通信、光纤、激光等领域。

Bel Power Solutions公司的发展小趣事

随着技术的不断进步,Bel Power Solutions始终保持着对创新的热情。公司不断加大研发投入,积极引进先进技术和人才,推动产品的升级换代。其中,一项重要的技术突破是公司成功研发出具有高效能、高可靠性特点的电源转换技术。这一技术的推出,不仅提升了公司产品的竞争力,还为客户提供了更加优质、可靠的电源解决方案。同时,公司还根据市场需求,推出了多款定制化、个性化的电源产品,满足了不同客户的特殊需求。

德艺隆(DEALON)公司的发展小趣事

面对数字化转型和智能化升级的大趋势,德艺隆不甘落后。他们引进先进的生产设备和技术,提高了生产效率和产品质量;同时,公司还加大了对数字化和智能化技术的研发和应用力度,推出了一系列智能化产品解决方案。这些举措不仅提升了公司的竞争力,也为公司的未来发展奠定了坚实的基础。

问答坊 | AI 解惑

华为公司PCB设计规范

华为公司PCB设计规范…

查看全部问答>

关于09竞赛题目

本帖最后由 paulhyde 于 2014-9-15 09:15 编辑 各位兄弟姐妹们,09年全国电子设计大赛即将开始,大家都准备的如何了?这次大赛听说有重大改革?有没有人指导今年的出题方向啊?  …

查看全部问答>

成功将foonas-EM刷入ST Chip的LS2(转)

参考了“给我的Linkstation HDHLAN-120G换了硬盘刷了uboot(ST芯片)\"一文中31楼idhly的方法很有启发,一时手潮在我的ST Chip的LS2也成功地刷上了foonas-EM。具体方法如下 0) 首先备份原厂的flash:cat /dev/mtd1 > mtd1_kernel_initrd.bin 1) 准 ...…

查看全部问答>

pspice讲义

本帖最后由 paulhyde 于 2014-9-15 09:38 编辑 所用教材: 很可惜,这本书已经停印了,不过看本PPT应该可以入个门,现在很多只教画图,仿真,我觉得熟悉一下PSPICE的文本程序,还是很有用的,许多芯片公司提供PSPICE模型都是给文本模型的,才好看 ...…

查看全部问答>

走出选购门禁控制器的四误区

门禁控制器是门禁系统的核心部分,是门禁系统的灵魂。门禁控制器的质量和性能优劣直接影响着门禁系统的稳定性,而系统的稳定性会直接影响着门禁系统使用者的工作和生活秩序,甚至影响到生命和财产的安全。     目前中国市场上门禁控制 ...…

查看全部问答>

【分享帖】超详尽WinCE 6.0环境搭建过程图解

前段时间有朋友问wince的环境搭建方法,由于安装有一些需要注意的地方,直接用语言描述有诸多不便,今天整理了一个图片集,觉得说的比较明白了,需要的朋友看一看,也希望高手朋友们多完善,谢谢! PS: [广告,被屏蔽] 了解更多内容可登陆:[广 ...…

查看全部问答>

重烧内核之后初始化失败

正常情况下串口的信息: INFO: CReg2440Uart::CReg2440Uart using processor frequency reported by the OAL (66666666). INFO: CReg2440Uart::CReg2440Uart using processor frequency reported by the OAL (66666666). INFO: WAVEDEV.DLL: Set ...…

查看全部问答>

崩溃啊 求助!

我的毕设课题是基于单片机的红外接口设计,打算用proteus仿真,但是元件库里没有接口芯片max3100和收发芯片hdls3201,怎么办啊? 各位好心的大侠,帮帮忙吧!…

查看全部问答>

linux下中断处理问题

现有一外部中断,中断来临后要求驱动马上读取数据,现在问题是:中断来临后,怎么通知用户主动读取数据,现在我用的是使用了中断上下部,下部处理中断,一产生中断马上进入上半部分处理接收,并传送到用户空间,那么此时的读如果在没有中断时就一直 ...…

查看全部问答>

关于Windows CE实用开发技术 电子档 下载问题

以前的地址我由于更新网站已经改掉了。 Windows CE实用开发技术 电子档下载。 版权说明,本电子档版权归原书作者所有,下载仅供学习,请与下载后24小时删除。 保护合法版权,请购买正版书籍! 请勿多线程,保护本空间的速度! 谢谢!! 下载 ...…

查看全部问答>