STM8S学习03——寄存器版本的一些程序

/*
一、空程序
*/
#include "stm8s208rb.h"
void delay(unsigned int t)
{
while(t--);
}
main()
{
PG_ODR = 0xff;
PG_DDR = 0xff;
PG_CR1 = 0xff;
PG_CR2 = 0x00;

while(1)
{
PG_ODR = 0x00;
delay(50000);
PG_ODR = oxff;
delay(50000);
}
}




/*
二、LED灯闪烁
*/
#include "stm8s208r.h"
void delay(unsigned int time);
void main(void)
{
PB_DDR |= 0X01; //选择输出模式
PB_CR1 |= 0X01; //推挽输出模式
PB_CR2 |= 0X00; //低速输出模式
while(1)
{
PB_ODR &= 0Xfe; //小灯亮
delay(50000); //调用延时函数
PB_ODR |= 0x01; //小灯灭
delay(50000); //调用延时函数
}
}
/*****************延时子程序*******************/
void delay(unsigned int time)
{
while(time--); //在此处循环
}






/*
三、跑马灯
*/
#includde "stm8s208r.h"
void delay(unsigned int time);
void main(void)
{
unsigned char i = 0;
PB_ODR = 0XFF; //设置输出寄存器的输出数值,初始化小灯全灭
PB_DDR = 0XFF; //设置I/O口B为输出
PB_CR1 = 0XFF; //设置I/O口B为推挽方式
PB_CR2 = 0X00; //输出最快速度为 2 MHZ
while(1)
{
switch(i) //让小灯从低位到高位一次亮
{
case 0: PB_ODR = 0xfe;
break;
case 1: PB_ODR = 0xfd;
break;
case 2: PB_ODR = 0xfb;
break;
case 3: PB_ODR = 0xf7;
break;
case 4: PB_ODR = 0xef;
break;
case 5: PB_ODR = 0xef;
break;
case 6: PB_ODR = 0xbf;
break;
case 7: PB_ODR = 0x7f;
break;
default: PB_ODR = 0xfe;
}
Delay(40000); //延时约20ms
i++; //让 i 加 1,下次执行程序时进入到case
if(i == 8)
{
i = 0;
}
}
}


/************延时子程序*************/
void delay(unsigned int time)
{
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值