📄 force.c
字号:
#pragma db cd small
#include <intrins.h>
#include <reg52.h>
#include <absacc.h>
#include <math.h>
#include <stdio.h>
#define NOP _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_()
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
extern uchar can_send_array[10]; /*CAN发送暂存*/
extern uchar can_receive_array[10]; /*CAN接收暂存*/
extern bit canflag; /*CAN接收信息标志*/
extern void dma_trans();
extern VSAA(float display);
extern convert(uchar out[]);
extern can_init(); /*CAN初始化*/
sbit CANRST=P1^2; /*复位CAN控制器*/
//主程序初始化//
void main_init( ) /*初始化子程序*/
{
void delay( uint x );
uchar i;
EA=0; /*cpu关中断*/
IT0=1; /*外部中断0触发方式选择,下降沿触发*/
EX0=1; /*开外部中断0*/
TMOD=0x10;
TH1=0x3c;
TL1=0xb0;/*T/C1置初值, 定时5ms*/
CANRST=0; /*复位CAN控制器*/
for(i=0;i<10;i++)
{
delay(125);
}
CANRST=1;
can_init(); /*CAN初始化*/
ET1=1; /*定时器1开中断*/
}
void delay( uint x ) /*delay subprogram*/
{
uchar j;
while(x--){
for(j=0;j<10;j++)
{;}
}
}
//主程序//
void main()
{
uint i;
float data force;
uchar out[2]={ 0x40,0x00};
uchar idata ad[2];
main_init();
EA=1;
for(;;)
{
ad[0]=convert(out); /*测试D/A输出的原始输出,并选A/D转换通道*/
force=(5.0/146)*(ad[0]-38); /*计算转换电压,并进行修正*/
VSAA(force);
delay(300);
can_send_array[2]=(int)force;
can_send_array[3]=(force-can_send_array[2])*100;
if(canflag==1)
{
canflag=0;
dma_trans();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -