4431|6

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

帮忙把下段程序转为c语言!跪求!!! [复制链接]

;*******************************
;        主   程   序
;*******************************
MAINPG:
        ANL        PCA0MD,#0xBF        ;WDTE=0:禁止看门狗定时器
;        MOV        PCA0MD,#0x89        ;选择PCA计数器的时钟源=系统时钟;允许PCA计数器/定时器溢出中断
        MOV        PCA0CPL2,#0xFF        ;看门狗定时器:32.1x12mS
;
        ORL        VDM0CN,#0x80        ;VDD监视器使能位
        MOV        RSTSRC,#0x06        ;允许时钟丢失检查;使能VDD监视器为复位源.
;           RSTSRC = 0x04;                // 检测到时钟丢失时允许系统复位
;
        MOV        OSCICN,#0x83        ;允许内部振荡器,频率=24.5MHz.不分频
osc_wait:
        MOV        A,OSCICN        ;等待内部振荡器频率有效(IFRDY=1)
        JNB        ACC.6,osc_wait
;-------------------------------
        CLR        A
        MOV        REF0CN,#0x03        ;基准电压控制寄存器(1->BIASE,REFBE)
;
;        MOV        ADC0CF,#0x10        ;选择快速滤波器;内部VREF(2.5V)
        MOV        ADC0CF,A        ;选择SINC3滤波器;内部VREF(2.5V)
;
        MOV        ADC0CN,#0x12        ;差分双极性方式(结果值为2的补码)GA增益=4
;
        MOV        ADC0CLK,#0x09        ;调制器时钟MDCLK=2.4576 MHz;(采样速率=19.2 KHz)
;
        MOV        ADC0DECH,#0x01        ;抽取比=DECI[10:0]+1=384[0x180](必须是8的整数倍!)
        MOV        ADC0DECL,#0x7F        ;ADC0转换周期=[384*128]/2.4576MHz=20mS(50Hz)
;
;        MOV        ADC0BUF,A        ;禁止正负通道高低输入缓冲器。
;        MOV        ADC0BUF,#0xAA        ;正负通道高输入缓冲器使能。
        MOV        ADC0BUF,#0x55        ;正负通道低输入缓冲器使能(ADin<5mVx100=0.5V)。
;
;        MOV        ADC0MUX,#0x08        ;单端输入方式:0x08->0x28->0x48
        MOV        ADC0MUX,#0x01        ;选择正负通道:0x01->0x23->0x45
        MOV        ADC0MD,#0x80        ;ADC0使能;空闲方式中。
;-------------------------------
;定时器0        计数器:每秒数波头(5KHz-15KHz)
;定时器1        波特率发生器:BaudRate=2^(SMOD0) x fT1 /32=fT1/16
;定时器2        25mS定时,每秒采样频率一次
;-------------------------------
        MOV        TMOD,#0x25        ;T1:波特率发生器;T0:计数器:每秒数波头
        MOV        SCON0,#0x10        ;RS485:8位,接收允许;方式1:波特率可编程的8位UART
        MOV        CKCON,A                ;定时器0,1,2使用系统时钟/12(24.5MHz/12)
        MOV        TH1,#0x96        ;波特率=9600bps
        MOV        TL1,TH1
        MOV        TMR2CN,A
        MOV        TMR2RLH,#0x38        ;25.000163265mS
        MOV        TMR2RLL,#0x9E
;
        MOV        P0MDIN,#0x7F        ort0:0:模拟;1:数字
        MOV        P1MDIN,#0xFF        ort1:
        MOV        P0MDOUT,A        ort0:0:漏极开路;1:推挽
        MOV        P1MDOUT,#0xF0        ort1:
        MOV        P0SKIP,#0xCF        ort0:1:被交叉开关跳过
        MOV        P1SKIP,#0xFE        ort1:
;
        MOV        XBR0,#0x01        ;使能UART:TX0,RX0->0.4.5
        MOV        XBR1,#0x50        ;使能弱上拉,允许XBR,T0->1.0
;
        MOV        FLSCL,A                ;最小写入时间
        MOV        EMI0CN,A        ;选择外部数据存储器低256位
;
        MOV        R0,#STACK
        MOV        SP,#STACK        ;初始化堆栈指针
RAMCLR:
        MOV        @R0,A
        DJNZ        R0,RAMCLR
        MOV        R0,#BUF0
        MOV        R1,#BUFER
        MOV        R0_1,#RS_OUT
        MOV        R1_1,#RS_IN
        MOV        CNTSEC,#40        ;40*25mS=1s:采样频率信号
        MOV        CNTCMP0,#7
        MOV        CNTCMP1,#7
        MOV        CNTCMP2,#7
        MOV        CNTCMPA,#3
        MOV        FCTCMP,#3
        MOV        CNTKEY,#8
        MOV        KEYDAT,#0xFF
        MOV        AD_CNT,#11        ;每个AD通道连续采样10次
;
        MOV        ADC0MUX,#0x01        ;选择正负通道:0x01->0x23->0x45
        ORL        ADC0MD,#1        ;首先执行全内部校准(偏移和增益)
        NOP
        JB        AD0CALC,$        ;=1:ADC0正在校准
        CLR        AD0INT
;
        MOV        CNTSPK,#120
        CLR        SPEAK
;
        CLR        SW_RS                ;选择接收
        SETB        TR0
        SETB        TR1
        SETB        TR2                ;启动定时器2(触发ADC);定时器2外部时钟为系统时钟/12
        SETB        ET2                ;定时器2中断
        SETB        ES0
        ORL        EIE1,#8                ;1->EADC0
;        SETB        PT2                ;定时器2中断优先
        SETB        EA                ;开全局中断
;
        MOV        ADC0MD,#0x80        ;ADC0空闲
        MOV        ADC0MUX,#0x01        ;选择正负通道:0x01->0x23->0x45
        ORL        ADC0MD,#2        ;启动单次转换
此帖出自编程基础论坛

最新回复

主要是我觉得他不像是在请教问题啊。  详情 回复 发表于 2011-12-14 20:48
点赞 关注
 

回复
举报

1万

帖子

16

TA的资源

版主

沙发
 
此帖出自编程基础论坛
 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

77

帖子

0

TA的资源

纯净的硅(初级)

板凳
 
  这……有点难度!
此帖出自编程基础论坛
 
 
 

回复

53

帖子

0

TA的资源

一粒金砂(中级)

4
 
把每一段都作为一个函数,表示很简单的
此帖出自编程基础论坛
 
 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

5
 
男儿膝下有黄金,兄弟。
自己加把劲或者一起努力,求指导,就可以留住黄金了。
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

803

帖子

0

TA的资源

一粒金砂(高级)

6
 
原帖由 辛昕 于 2011-12-13 11:07 发表
男儿膝下有黄金,兄弟。
自己加把劲或者一起努力,求指导,就可以留住黄金了。

........
好吧,我感觉它是在做课程设计之类的东西
此帖出自编程基础论坛
 
 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

7
 

回复 6楼 范小川 的帖子

主要是我觉得他不像是在请教问题啊。
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表