* Function:实现按键S1控制LED和蜂鸣器
* Copyright (c) 2002-2005 STMicroelectronics
*/
#include "stm8s105c4.h"
_Bool LED1 @PA_ODR:6 //定义PA.6输出寄存器为LED1
_Bool Beep @PD_ODR:4 /梁晌/定义橡滚锋PD.4输出寄存器为蜂鸣器备绝
_Bool S1 @PD_IDR:2 //定义PD.2输入寄存器为按键
//I/O初始化
void GPIO_Init(void)
{
PA_DDR = 0x40//PA.6推挽输出
PA_CR1 = 0x40
PD_DDR = 0x10//PD.2上拉输入 、PD.4推挽输出
PD_CR1 = 0x14
}
main()
{
GPIO_Init()
while(1)
{
if(S1==0) //如果有按键则灯亮,蜂鸣器响
{
LED1 = 1
Beep = 1
}
else
{
Beep = 0
LED1 = 0
}
}
}
ADC1的基本的单次转换void InitADC()
{
ADC1->CR1 = 0x20 //漏告分频系数为4 单次转换模式 先不启动ADC转换
ADC1->CR2 = 0x08 //非外部触发 数据右对齐 禁止扫描模式
ADC1->CSR = 0x03 //禁止转换结束中断 设置转换通道为AIN3
ADC1->TDRL|= 0x08 //禁止AIN3施密特触发器功能
ADC1->CR1 |= 0x01 //第一返虚明次写1是从低功耗模式唤醒
}
unsigned int GET_AD()
{
unsigned int temph=0
unsigned char templ=0
ADC1->CR1 |= 0x01 //启誉咐动AD转换
while(!(ADC1->CSR&0x80)) //等待转换结束
ADC1->CSR &= ~0x80 //清除转换结束标志
templ = ADC1->DRL
temph = ADC1->DRH //读出AD转换结果
temph = ConTOINT(temph,templ)
return(temph)
}
#include "REG51.H"#include "INTRINS.H"
typedef unsigned char BYTE
sbit DQ = P3^3//DS18B20的数据口位P3.3
BYTE TPH //存放温橡睁度值的高字节
BYTE TPL //存放温森信度值的低字节
void DelayXus(BYTE n)
void DS18B20_Reset()
void DS18B20_WriteByte(BYTE dat)
BYTE DS18B20_ReadByte()
void main()
{
DS18B20_Reset() //设备复位
DS18B20_WriteByte(0xCC) //跳过ROM命令
DS18B20_WriteByte(0x44) //开始转换命令
while (!DQ) //等待转换完成
DS18B20_Reset() //设备复位
DS18B20_WriteByte(0xCC) //跳过ROM命令
DS18B20_WriteByte(0xBE) //读暂梁春岁存存储器命令
TPL = DS18B20_ReadByte() //读温度低字节
TPH = DS18B20_ReadByte() //读温度高字节
while (1)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)