Start(void);voidStop(void);u8CurrentRead(void);u8RandomRead(u8addr);voidByteWrite(u8addr,u8data);voidSendByte(u8data);voidI2c_Ack(void);voidI2c_NoAck(void);u8I2c_CheckAck(void);u8ReadByte
;*****************************************;78p153寄存器定义;*****************************************R0==0X0;间接寻址IAR;****CONTREGISTE*************;76543210;-INTTSTEPABPSR2PSR1PSR2;PSRT
mcu:EM78P153port5==0x05dly1==10hdly2==11hdly3==12htime==13hmode1==15hmode2==16h;**************主程序*****************org0X00main: MOV a,@00hiowport5 MOV a,@64;2s MOV time,a MOV a,@3 MOV m
EM78系列单片机--D/A变换程序的设计PORT6的输出接有一个数模转换器(D/A convert)。写一程序产生一个鋸此波。本例的D/A Convert所采用的方式为R – 2R的方式,所使用的电阻为20K的同一品牌的排阻。因POR
PORT6输出动作的控制,而且外部接有一推动8个七段显示器的电路。编写一程序在8个七段显示器上轮流显示1,2,3,4,5,6,7,8。下图为控制电路的方块图。由PORT6单独控制8个七段显示器,利用时间分割(time slI
在許多程序设计的場合,我們時常会利用到时间延迟子程序,接下来就介紹一个可以控制延迟时间的延迟子程序。开下面是利用发工具E8-ICE来演示的一个精确的控制延迟时间的程序,选择使用石英振荡器,可以精
在EM78X56系列的IC中有三种中断信号,分別是:TCC溢位中断。PORT6Change中断。外部信号中断。在说明中断使用方式之前,用户要了解中断寄存器,及与中断息息相关的控制寄存器(ControlRegister),另外在芯
在一个沒有規则性的内容转换中,查表程序是相当有用的,用户可以使用查表程序很快速的得到相关内容的转换。例:设计一个程序,將如下图所示中的PORT5读到的一个数值,将输入内容做转换,然后输出到PORT
本例为单字节二进制数(0X20)转换为非压缩BCD 码,存在0X25,0X24,0X23 中,0X25 为百位,0X23 为个位。main: MOV a,@0xa4 ;赋值MOV 0x20,aMOV 0x21,aMOV 0x22,aMOV a,@0x0 ;0x23,0x24,0x25 单元清0MOV 0x23
两字节压缩BCD 码转换为两字节二进制数。算法如下:BCD 码abcd=1000a+100b+10c+d=10{10[10a+b]+c}+d,将各位BCD 码分离出之后,即可根据此式转换为二进制数。涉及到乘法运算和多字节加法运算。0X20,0X
多字节二进制除法被除数为3 个字节,在0x20、0x21、0x22 单元中,0x22.7 为最高位,0x20.0 为最低位。除数为2 个字节,在0x30、0x31 中。算法:EM78单片机没有除法指令,而且本例中除法为多字节除法,可
EM78单片机没有乘法指令,所以乘法运算需要转化为加法运算。0X20 单元数据乘以0X21 单元数据,结果放在0X22,0X23 中。main: MOV a,@0x0 ;0x22,0x23 单元清0MOV 0x22,aMOV 0x23,aMOV a,@0x3f ;赋值MOV 0
三 多字节二进制减法0x20,0x21 中的二进制无符号数减0x22,0x23 中的二进制无符号数, 低地址中放低字节数据。假设被减数大于减数。注意:(1)sub 指令减出结果为正时,c 标志置1。(2)sub 指令减出结果
二 多字节二进制加法0X20,0X21 中的二进制无符号数与0X22,0X23 中的二进制无符号数相加,结果放在0X24,0X25,0X26 中,低地址中放低字节数据。Main: MOV a,@0x78 ;赋值MOV 0x20,aMOV a,@0xc6MOV 0x21,aM
将一个字节的二进制数转换为两位16 进制数的ASCⅡ码main: mov a,@0x9f ;二进制数为0x9fmov 0x30,a ;二进制数存入0x30mov a,@0x02mov 0x10,a ;0x10 中存放转换次数mov a,@0x31mov 0x04,a ;0x04 中为转换