stc89c52在Linux或MacOS下使用sdcc和stcgal中断与LCD测试代码
时间:2022-07-26
本文章向大家介绍stc89c52在Linux或MacOS下使用sdcc和stcgal中断与LCD测试代码,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
使用说明参考:https://zhangrelay.blog.csdn.net/article/details/108449115
外部中断:
#include<8052.h>
#define LSA P1_5
#define LSB P1_6
#define LSC P1_7
void EXint_Init(void);
void Delayms(unsigned int);
void Down2Up(int);
void Up2Down(int);
void EXINT0() __interrupt 0;
void EXINT1() __interrupt 2;
void main()
{
EXint_Init();
LSA=0;
LSB=0;
LSC=0;
while(1)
{
P0 = 0xff;
Delayms(250);
P0 = 0x00;
Delayms(250);
}
}
void EXint_Init()
{
IT0=1;
IT1=0;
// IPH=0x40;
PX1=1;
EA=1;
EX0=1;
EX1=1;
}
void Delayms(unsigned int xms)
{
unsigned int i,j;
for(i = xms;i > 0;i--)
{
for (j = 110;j > 0;j--);
}
}
void EXINT0() __interrupt 0
{
Down2Up(3);
}
void EXINT1() __interrupt 2
{
Up2Down(3);
}
void Down2Up(int x)
{
int i, j;
unsigned char sel=0xfe;
for(i=0;i<x;i++)
{
for(j=0;j<8;j++)
{
P0 = sel;
Delayms(250);
sel =sel<<1;
}
sel=0xfe;
}
}
void Up2Down(int x)
{
int i, j;
unsigned char sel=0x7f;
for(i=0;i<x;i++)
{
for(j=0;j<8;j++)
{
P0 = sel;
Delayms(250);
sel=sel>>1;
}
sel=0x7f;
}
}
定时器中断:
#include <8052.h>
#define Wave P0_1 //位定义,定义完之后,以下 Wave 即代表P0.1
#define LSA P1_5 // P0口所接的发光二极管由开发板上的WaveS0控制,
#define LSB P1_6 //且该位连接到74HC138三八译码器的输出端,
#define LSC P1_7 //因此P1.5,P1.6,P1.7需赋值0以选中该位。
unsigned char cnt = 0; //定义一个计数变量,记录 T0 溢出次数
void Timer0() __interrupt 1;
/************************************************************/
void main () //主函数
{
LSA=0; //本开发板的P0发光二极管片选地址
LSB=0;
LSC=0;
Wave = 0; //初始化P1.0=0
TMOD = 0x01; //设置定时器T0工作方式1
TL0 = 47104%256; //计数器初值
TH0 = 47104/256;
TR0 = 1; //启动定时器
ET0 = 1; //开中断
EA = 1;
while(1); //模拟主程序其它工作
}
/************************************************************/
void Timer0() __interrupt 1 //定时器 T0 中断响应
{
TL0 = 47104%256; //计数器初值
TH0 = 47104/256;
cnt++; //计数值自加 1
if (cnt > 49) //判断 T0 溢出是否达到 50 次,100次
{
Wave=1;
if (cnt > 99)
{
cnt=0;
Wave=0;
}
//cnt = 0; //达到 50 次后计数值清零
/*if( Wave = 0 )
{
Wave = 1;
}
else
{
Wave = 0;
}*/
//Wave = ~Wave; //Wave 取反:0-->1、1-->0
}
}
helloworld:
#include<8052.h>
#define uchar unsigned char
#define uint unsigned int
#define lcden P1_2
#define lcdrs P1_0
#define rw P1_1
uchar table[] = "Hello World!";
uchar num;
void delay(uint z) {
uint x, y;
for(x = z; x > 0; x--)
for(y = 110; y > 0; y--);
}
void write_com(uchar com) {
lcdrs = 0;
P0 = com;
delay(5);
lcden = 1;
delay(5);
lcden = 0;
}
void write_data(uchar date) {
lcdrs = 1;
P0 = date;
delay(5);
lcden = 1;
delay(5);
lcden = 0;
}
void init() {
rw = 0;
lcden = 0;
write_com(0x38);
write_com(0x0e);
write_com(0x06);
write_com(0x01);
write_com(0x80);
}
void main() {
init();
for(num = 0; num < 12; num++) {
write_data(table[num]);
delay(100);
}
while(1);
}
- Openflow细节理解之—Buffer_id篇
- 移动商城项目总结
- 移动商城第一篇【搭建项目环境+数据模型】
- 移动商城第二篇(品牌管理模块)【文件上传、数据校验、CRUD】
- 手把手在亚马逊EC2上搭建Keras GPU
- 移动商城第三篇(商品管理)【查询商品、添加商品】
- 移动商城第四篇(商品管理)【添加商品续篇、商品审核和上下架、前台展示、后台筛选】
- 移动商城第五篇(用户模块)【用户登陆、回显用户、拦截器、收货地址】
- 移动商城第六篇【单品查询、静态化页面】
- 移动商城第七篇【购物车增删改查、提交订单】
- Shiro入门这篇就够了【Shiro的基础知识、回顾URL拦截】
- OFTest(一):如何忽略一些字段在端口poll报文
- Shiro第二篇【授权、整合Spirng、过滤器】
- Ajax数据的爬取(淘女郎为例)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 优化循环的方法-循环展开
- 程序性能优化-局部性原理
- Codeforces Round #547 (Div. 3)E. Superhero Battle
- 《动态规划_入门 LIS 问题 》
- 栅格化系统的原理以及实现
- vue-qr二维码插件使用简介
- Codeforces Round #547 (Div. 3)F1. Same Sum Blocks (Easy)
- 手机软键盘弹起导致页面变形的一种解决方案
- Codeforces Round #547 (Div. 3)F2. Same Sum Blocks (Hard)
- 《 动态规划_ 入门_最大连续子序列 》
- docker搭建elasticsearch集群
- 用canvas实现手写签名功能
- Codeforces Round #547 (Div. 3)G. Privatization of Roads in Treeland
- 《 动态规划_ 入门_最大连续子序列_HDU_1003 》
- 2015 09CCF计算机软件能力认证试题第三题