伪本征函数—Keil C51头文件INTRINS.H(第二版)(hotpower)
更新时间:2023-08-28 04:07:01 阅读量: 教育文库 文档下载
- 共同本征函数推荐度:
- 相关推荐
伪本征函数—Keil C51头文件INTRINS.H(第二版)(hotpower)
伪本征函数—Keil C51头文件INTRINS.H(第二版)(hotpower)
作者:未知 来源:大虾电子 点击数:
36 更新时间:2007年03月05日
/*-------------------------------------------------------------------------- INTRINS.H
Intrinsic functions for C51.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved.
--------------------------------------------------------------------------*/
#ifndef __INTRINS_H__
#define __INTRINS_H__
extern void _nop_ (void);
extern bit _testbit_ (bit);
extern unsigned char _cror_ (unsigned char, unsigned char);
extern unsigned int _iror_ (unsigned int, unsigned char);
extern unsigned long _lror_ (unsigned long, unsigned char);
extern unsigned char _crol_ (unsigned char, unsigned char);
extern unsigned int _irol_ (unsigned int, unsigned char);
extern unsigned long _lrol_ (unsigned long, unsigned char);
extern unsigned char _chkfloat_(float);
#endif
/*-------------------------------------------------------------------------- 伪本征函数——Keil C51头文件INTRINS.H的扩容工程
作者:HotPower@http://www.77cn.com.cn 2004.5.27 第二版
伪本征函数—Keil C51头文件INTRINS.H(第二版)(hotpower)
--------------------------------------------------------------------------*/
/*------------------------------------------------------------------------*/ #define _setc_() CY = 1
#define _clrc_() CY = 0
#define _setb_(RBIT) RBIT = 1
#define _clrb_(RBIT) RBIT = 0
#define _clra_() ACC = 0
/*------------------------------------------------------------------------*/ #define _xorr_(RX) RX ^= RX //用于取奇偶位P,且RX=0 #define _andr_(RX) RX &= RX //用于取奇偶位P,且RX=不变 #define _orr_(RX) RX |= RX //用于取奇偶位P,且RX=不变 #define _notr_(RX) RX =~RX
/*------------------------------------------------------------------------*/ #define _movra_(RX) RX = ACC
#define _movar_(RX) ACC = RX
#define _movcb_(RBIT) CY = RBIT
#define _movbc_(RBIT) RBIT = CY
#define _movb0_(RBIT, RX) RBIT = RX & 0x01 //用于取RX的最低位 #define _movb7_(RBIT, RX) RBIT = RX & 0x80 //用于取RX的最高位 #define _movc0_(RX) CY = RX & 0x01
#define _movc7_(RX) CY = RX & 0x80
/*------------------------------------------------------------------------*/ #define _rrca_() CY = ACC & 0x01 //产生RRC A指令 #define _rlca_() CY = ACC & 0x80 //产生RLC A指令
/*------------------------------------------------------------------------*/ #define _rrcr_(RX) CY = RX & 0x01; RX = ACC //产生RRC RX指令
伪本征函数—Keil C51头文件INTRINS.H(第二版)(hotpower)
#define _rlcr_(RX) CY = RX & 0x80; RX = ACC //产生RLC RX指令
/*------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------- 累加器带进位右移指令 RRC A #define _rrca_() CY = ACC & 0x01 汇编代码 rrc a
--------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------- 累加器带进位左移指令 RLC A #define _rlca_() CY = ACC & 0x80
汇编代码 rlc a
--------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------- 寄存器带进位右移指令 RRC REG #define _rrcr_(RX) CY = RX & 0x01; RX = ACC
汇编代码 mov a,RX
rrc a
mov RX,a
/*-------------------------------------------------------------------------- 例:
C51程序
unsigned char i;
i = 0x55;
_setc_();//CY=1
_rrcr_(i);//i=0xaa,ACC=0xaa,CY=1
伪本征函数—Keil C51头文件INTRINS.H(第二版)(hotpower)
汇编代码
mov r7,#055h
setb c
mov a,r7
rrc a
mov r7,a
--------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------- 寄存器带进位左移指令 RLC REG #define _rlcar_(RX) CY = RX & 0x80; RX = ACC
汇编代码 mov a,RX
rlc a
mov RX,a
/*-------------------------------------------------------------------------- 例:
C51程序
unsigned char i;
i = 0x55;
_setc_();//CY=1
_rlcr_(i);//i=0x55,ACC=0xab,CY=0
汇编代码
mov r7,#055h
setb c
mov a,r7
rlc a
mov r7,a
--------------------------------------------------------------------------*/
伪本征函数—Keil C51头文件INTRINS.H(第二版)(hotpower)
伪本征函数"汇编级"应用
----------------------------------------------------------------------------
1.写串行数据
C51程序
void writedata(unsigned char val)
{
_movar_(val);//或用ACC = val;
for (val = 8; val > 0; val--)
{
_clrb_(TXD);//或用TXD = 0;
_rrca_();
_movbc_(RXD);//或用RXD = CY;
_setb_(TXD);//或用TXD = 1;
_nop_();
}
}
A51代码
writedata:
mov a,r7
mov r7,#8
writedata_loop:
clr txd
rrc a
mov rxd,c
setb txd
nop
djnz r7,writedata_loop
ret
伪本征函数—Keil C51头文件INTRINS.H(第二版)(hotpower)
2.读串行数据
C51程序
unsigned char readdata(void)
{
unsigned char val;
for (val = 8; val > 0; val--)
{
_clrb_(TXD);//或用TXD = 0;
_nop_();
_movcb_(RXD);//或用CY = RXD;
_rrca_();
_setb_(TXD);//或用TXD = 1;
_nop_();
}
_movra_(val);//或用val = ACC;
return val;
}
A51代码
readdata:
mov r7,#8
readdata_loop:
clr txd
nop
mov c,rxd
rrc a
setb txd
nop
djnz r7,readdata_loop
伪本征函数—Keil C51头文件INTRINS.H(第二版)(hotpower)
mov r7,a
ret
--------------------------------------------------------------------------*/
正在阅读:
伪本征函数—Keil C51头文件INTRINS.H(第二版)(hotpower)08-28
2017届高三地理选择题综合训练二07-05
建筑法规期末复习题10-22
活动策划方案【优秀8篇】04-03
银行财务部实习报告范文02-22
JavaScript试题集05-01
科学评价铁矿石的经济性11-05
VOLTE MOS质量提升 - 图文01-04
玻璃瓶罐的缺陷产生原因及解决方法01-14
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 函数
- hotpower
- INTRINS
- 文件
- Keil
- C51
- 2019遴选材料分析题:加强生态文明建设美丽新家园
- 政治素质学习Plan
- 浅谈波普爵士乐的音乐风格
- 2018年中国皮革皮件箱包市场调研及投资前景评估(目录)
- 法制进小学活动总结
- 明尼苏达多项人格测验
- 线性表的链式存储结构实验报告
- 2019年4月自考04735数据库系统原理详解
- 常用螺栓的标准及规格表
- 第四章-5节 利润及利润分配
- 西方经济学任务2(参考)
- GTA5英文介绍版本
- 依法治国的重要内涵和意义
- 有限公司董事、经理、监事任职文件
- 浙江省经典诵读一二年级(第1-50篇)
- 《文字录入》教案
- Zedboard USB串口驱动安装
- 专职安全员培训资料(很全面)
- _夏热冬冷地区居住建筑节能设计标准_中窗墙面积比的确定
- 【最新2018】比价情况说明-word范文 (14页)