欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
STC8A單片機AC轉換問題
[打印本頁]
作者:
eyven0519
時間:
2020-2-14 15:49
標題:
STC8A單片機AC轉換問題
初學STC8A單片機,ADC轉換用P10通道,無檢測結果。接3.3V測試電壓,
ADC_RES輸出為0;請指教!
程序如下:
#include "stc8.h"
#define uchar unsigned char
unsigned char const z[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x80};//7段數碼管段碼表共陽0,1,2,3,4,5,6,7,8,9,.
unsigned char code c[]={0x08,0x10,0x20,0x40};//數碼管掃描
unsigned char smgduan[4]={0x3f,0x80,0x3f,0x3e};
sbit LSA=P0^0;
sbit LSB=P0^1;
sbit LSC=P0^2;
int e;
void smg(void)
{
unsigned char i;
while(1)
{
for(i=0;i<4;i++)
{
switch(i)
{
case(0):
LSA=0;LSB=0;LSC=0; break;//???0?
case(1):
LSA=1;LSB=0;LSC=0; break;//???1?
case(2):
LSA=0;LSB=1;LSC=0; break;//???2?
case(3):
LSA=1;LSB=1;LSC=0; break;//???3?
}
P2=smgduan[i]
delay(100);
P2=0x00;
}
}}
uint GetADCResult()
{
ADC_CONTR = ADC_POWER|ADC_START;
_nop_();
_nop_();
_nop_();
_nop_();
ADC_RES=0;
while(!(ADC_CONTR & 0x20));
ADC_CONTR &= ~ADC_FLAG;
return (ADC_RES*4+ADC_RESL);
}
void main(void)
{
uint V;
P1M0 = 0X00;
P1M1 = 0X00;
ADC_CONTR=0x80;
ADCCFG=0x00;
ADC_RES=0;
ADC_RESL=0;
while(1)
{
V=GetADCResult()*10;
smgduan[0]=z[V/10];
smgduan[2]=z[V%10];
smg();
}
}
復制代碼
作者:
wulin
時間:
2020-2-15 07:13
樓主程序不完整,寄存器配置不當,給你補充并注釋,你試試。
#include "stc8.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
unsigned char const z[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x80};//7段數碼管段碼表共陰0,1,2,3,4,5,6,7,8,9,.
//unsigned char code c[]={0x08,0x10,0x20,0x40};//數碼管掃描
unsigned char smgduan[4];//顯示緩存
sbit LSA=P0^0;
sbit LSB=P0^1;
sbit LSC=P0^2;
//int e;
void delay(uint k)
{
uint i,j;
for(i=k;i>0;i--)
for(j=1150;j>0;j--);//12T/j=110
}
void smg(void)
{
static uchar i=0;
P2=0x00;//消隱
switch(i)//送位碼
{
case(0):
LSA=0;LSB=0;LSC=0;i++; break;//???0?
case(1):
LSA=1;LSB=0;LSC=0;i++; break;//???1?
case(2):
LSA=0;LSB=1;LSC=0;i++; break;//???2?
case(3):
LSA=1;LSB=1;LSC=0;i=0; break;//???3?
}
P2=smgduan[i];//送段碼
delay(1);
}
uint GetADCResult(uchar ch)
{
ADC_CONTR = ADC_POWER|ADC_START|ch;//
_nop_();
_nop_();
_nop_();
_nop_();
// ADC_RES=0;
while(!(ADC_CONTR & 0x20));
ADC_CONTR &= ~ADC_FLAG;
return ADC_RES<<8|ADC_RESL;
}
void main(void)
{
uint V;
P1M0 = 0x00;//P1.0高阻模式
P1M1 = 0x01;//P1.0高阻模式
ADC_CONTR=0x80;//開ADC電源
ADCCFG=0x2f;//保存結果格式1/速度512時鐘
ADC_RES=0;//清以前結果
ADC_RESL=0;//清以前結果
while(1)
{
V=GetADCResult(0);//通道P1.0結果0~4095
smgduan[0]=z[V/1000%10];
smgduan[1]=z[V/100%10];
smgduan[2]=z[V/10%10];
smgduan[3]=z[V%10];
smg();
}
}
復制代碼
作者:
eyven0519
時間:
2020-2-15 18:35
wulin 發表于 2020-2-15 07:13
樓主程序不完整,寄存器配置不當,給你補充并注釋,你試試。
謝謝指導!
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1