找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1686|回复: 2
打印 上一主题 下一主题
收起左侧

怎么把这个stc12单片机程序改成stc15?的

[复制链接]
跳转到指定楼层
楼主
ID:538083 发表于 2019-5-21 22:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "main.h"
#include "LCD1602.h"
unsigned int ADC_Buffer = 0;

//****************************************************
//主函数
//****************************************************
void main()
{
        ADC_CONTR = ADC_360T | ADC_ON;
        AUXR1 |= ADRJ;                                                                        //ADRJ = 1;                        //10bitAD右对齐
        Init_LCD1602();                                                                        //初始化LCD1602
        LCD1602_write_com(0x80);                                                //指针设置到
        LCD1602_write_word("Welcome to use!");                        //显示内容


        LCD1602_write_com(0x01);                                //清屏

        while(1)
        {
                LCD1602_write_com(0x80);                                                //指针设置到第一行
                LCD1602_write_word("Initialize OK!");                        //显示内容

                ADC_Buffer = 1023 - adc10_start(0);                // P1.0 ADC

                LCD1602_write_com(0x80+0x40);                                        //指针设置
                LCD1602_write_word("val = ");                        //显示内容
                LCD1602_write_data(ADC_Buffer/1000+0x30);                        //显示内容
                LCD1602_write_data(ADC_Buffer%1000/100+0x30);
                LCD1602_write_data(ADC_Buffer%100/10+0x30);
                LCD1602_write_data(ADC_Buffer%10+0x30);
               
                if( Sensor_DO == 0 )                //检测比较器输出
                {
                        LED1 = LED_ON;
                }
                else
                {
                        LED1 = LED_OFF;        
                }
                Delay_ms(100);               
        }
}

//****************************************************
//做一次ADC转换
//****************************************************
unsigned int adc10_start(unsigned char channel)        //channel = 0~7
{
        unsigned int        adc;
        unsigned char        i;

        P1ASF = (1 << channel);                        //12C5A60AD/S2系列模拟输入(AD)选择

        ADC_RES = 0;
        ADC_RESL = 0;

        ADC_CONTR = (ADC_CONTR & 0xe0) | ADC_START | channel;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
         

//        for(i=0; i<250; i++)                //13T/loop, 40*13=520T=23.5us @ 22.1184M
        i = 250;
        do{
                if(ADC_CONTR & ADC_FLAG)
                {
                        ADC_CONTR &= ~ADC_FLAG;                                //软件清零ADC_FLAG
                        _nop_();
                        _nop_();
                        _nop_();
                        _nop_();
                        adc = 0;
                        adc = (ADC_RES << 8) | ADC_RESL;        //ADRJ_enable()


                        return        adc;
                }
        }while(--i);
        return        1024;
}

//****************************************************
//MS延时函数(12M晶振下测试)
//****************************************************
void Delay_ms(unsigned int n)
{
        unsigned int  i,j;
        for(i=0;i<n;i++)
                for(j=0;j<123;j++);
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:149451 发表于 2019-5-22 08:13 | 只看该作者
不用改程序吧?除非端口不够。
回复

使用道具 举报

板凳
ID:213173 发表于 2019-5-22 08:43 | 只看该作者
两者管脚排列不同,少量特殊功能寄存器地址不同,其它基本可以通用。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表