STM8S系列程序示例

STM8S系列程序示例,第1张

/* MAIN.C file

* 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)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12546670.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存